我需要一些关于简单程序的帮助。不 - 这不是我的作业(我正在为自己学习 Cpp 并可能在未来使用它)
嗯是的。我有一个程序,读取数组大小 10
, 然后在其中输入数字 {2.56, 1.598, 0, 5.15, 0, 3.012, 10, 4.789, 2.569, 0}
该程序应忽略 0
,确实如此,但问题是..我需要获取数字在数组中的位置
(最小的数字是 1.598
及其在数组中的 2
)
同时我得到号码 8
在最大的(应该是 5
如果零将被忽略)
和 1
在最小的。我该如何解决?
这是最大数的空值:
void Biggest(float array[], int n, float &max, int &maxNr)
{
max = array[0]
for (int i = 1; i < n; i++){
if (array[i] == 0)
continue;
if (array[i] > max){
max = array[i];
maxNr = i;
}
}
}
打印无效:
void Print(float min, float max, double avg, int maxNr, int minNr)
{
ofstream info;
info.open("result1.txt");
info << "Biggest: " << max << " Number : " << maxNr << endl;
info << "Smallest: " << min << " Number : " << minNr << endl;
info << "Average: " << avg << endl;
info.close();
}
所有主要内容。
int main(){
float array[100];
int n;
float max;
float min;
double avg;
int maxNr, minNr;
Reading(array, n);
Biggest(array, n, max, maxNr);
Smallest(array, n, min, minNr);
Average(array, n, avg);
Printing(min, max, avg, maxNr, minNr);
return 0;
}
最佳答案
首先,数组索引从0
开始,而不是1
。
如果你想获得忽略零的位置,你需要使用一个单独的计数器变量,而不是用于索引数组的计数器变量,这样你就不会在跳过 0
时增加它.
void Biggest(float array[], int n, float &max, int &maxNr)
{
max = array[0];
int position = 0;
for (int i = 0; i < n; i++){
if (array[i] == 0) {
continue;
}
if (array[i] > max){
max = array[i];
}
position++;
}
maxNr = position;
}
关于c++ - 数组元素编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033283/