2017-02-03 14 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

まず、配列のインデックスがない10から始まります。

ゼロを無視する位置を取得する場合は、配列のインデックスに使用されているカウンタ変数とは別のカウンタ変数を使用する必要があります。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

ほとんどの(私が考えることができるすべての)プログラミング言語は、インデックスゼロから始まります。あなたは、配列を持っている問題を修正する必要があることをあなたはループが配列の最初の要素から開始したいので、私は0に初期化されなければならない

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

:だから、単純であるためにあなたのループのための条件を変更します。

+0

彼は 'max = array [0];'を初期化するので0をスキップします。 – Barmar

関連する問題