数组元素数量

问题描述:

我需要一些帮助,一个简单的程序。没有 - 它不是我的家庭作业(我正在为自己学习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; 
} 
+1

您的代码甚至不进行编译。你在'max = array [0]'末尾缺少一个';',并且你在'Biggest()'中有'{''无法匹配。 – Barmar

+2

尝试编辑您的文章,包括一[微乎其微,完全,可核查示例](http://*.com/help/mcve)。 –

+0

你的问题是什么? – Raindrop7

首先,数组下标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; 
} 
+2

如果将'max'存储为'array [0]',则可能会开始用'1'循环。 – Jarod42

+0

@ Jarod42好点。但是,如果'array [0]'包含'0',那么这需要额外的检查。 – Barmar

在大多数(我能想到的)编程语言的数组开始于索引零。所以,简单地改变你的循环条件是:

for (int i = 0; i < n; i++) 

因为你希望循环在数组中的第一个元素开始,我必须初始化为0。这应该可以解决你与阵列所遇到的问题。

+0

他跳过0,因为他初始化了'max = array [0];' – Barmar