我需要一些简单程序的帮助。不 - 它不是我的作业(我正在为自己学习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
开始,而不是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;
}
答案 1 :(得分:0)
大多数(我能想到的)编程语言中的数组从索引零开始。因此,只需将for循环条件更改为:
c(1,2,1)
因为你希望循环从数组中的第一个元素开始,所以我必须初始化为0.这应该可以解决你对数组的问题。