0

問題があります。プログラムの実行時に int が返す値が大きすぎます。このプログラムは算術平均を数えます。

例: 1,2,3,4,5 と入力すると、2293393と表示されます。

/* 
 * File:   main.cpp
 * Author: Natch
 *
 * Created on 4 listopad 2012, 15:32
 */

#include <cstdlib>
#include <iostream>

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    int n,x;
    x = 0;
    /*
     * a - array
     * x - repeat
     * n - array fields
     * suma - array fields sum
     */
    cout << "Srednia liczb" << endl;
    cout << "Program oblicza srednia z x liczb." << endl;
    cout << "Podaj ilosc liczb do obliczenia sredniej:" << endl;
    cin >> n;
    int a[n];

    while(x<n) {
        x++;
        cout << "Podaj " << x << " liczbe:" << endl;
        cin >> a[x];
    }
    long int suma;

    for (int i = 0; i < n; i++) {
        suma += a[i];
    }

    int srednia = suma/n;
    cout << "Srednia wynosi:" << endl << srednia << endl;
    system("pause");

    return 0;
}

私の英語でごめんなさい、私はポーランド出身です。

couts は Google 翻訳 (pl->en) で翻訳できます。

4

2 に答える 2

4

あなたのプログラムには古典的な "off by one" エラーがありxますa[x]

while(x<n) {
    cout << "Podaj " << (x+1) << " liczbe:" << endl;
    cin >> a[x++];
}
于 2012-11-04T15:37:57.813 に答える
2

変数sumaをゼロに初期化します。

long int suma=0;

xの前coutにインクリメントする代わりに、でインクリメントしますcout

cout << "Podaj " << x++ << " liczbe:" << endl;
于 2012-11-04T18:35:49.080 に答える