2017-02-03 53 views
0

我需要一些幫助,一個簡單的程序。沒有 - 它不是我的家庭作業(我正在爲自己學習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://stackoverflow.com/help/mcve)。 –

+0

你的問題是什麼? – Raindrop7

回答

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; 
} 
+2

如果將'max'存儲爲'array [0]',則可能會開始用'1'循環。 – Jarod42

+0

@ Jarod42好點。但是,如果'array [0]'包含'0',那麼這需要額外的檢查。 – Barmar

0

在大多數(我能想到的)編程語言的數組開始於索引零。所以,簡單地改變你的循環條件是:

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

因爲你希望循環在數組中的第一個元素開始,我必須初始化爲0。這應該可以解決你與陣列所遇到的問題。

+0

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