数组元素数量
问题描述:
我需要一些帮助,一个简单的程序。没有 - 它不是我的家庭作业(我正在为自己学习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;
}
答
在大多数(我能想到的)编程语言的数组开始于索引零。所以,简单地改变你的循环条件是:
for (int i = 0; i < n; i++)
因为你希望循环在数组中的第一个元素开始,我必须初始化为0。这应该可以解决你与阵列所遇到的问题。
+0
他跳过0,因为他初始化了'max = array [0];' – Barmar
您的代码甚至不进行编译。你在'max = array [0]'末尾缺少一个';',并且你在'Biggest()'中有'{''无法匹配。 – Barmar
尝试编辑您的文章,包括一[微乎其微,完全,可核查示例](http://*.com/help/mcve)。 –
你的问题是什么? – Raindrop7