0

私はC++で練習用の小さなアプリを開発しています。実際には、配列を使用せずにこのアルゴリズムの開発に成功しましたが、今は配列を使用して開発したいと考えています。プログラムは、15ポイントの練習のうち4つのグレード2(1番目と3番目の値)、20ポイントのうち2つ(2番目と4番目の値)、および30ポイントのうちの1つを受け入れる必要があります。これは私のコードです:

int main(int argc, char** argv){

    int grades[5];
    int i; 
    int sum=0;

    for(i=0; i<5; i++){
        cin >> grades[i];

        sum+=grades[i];

        if(grades[0]>15||grades[1]>20){

            cout<<"ERROR"<<endl;
            break;

        }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

        }if(grades[4]>30){

            cout <<"ERROR"<<endl;
            break;
        }

    }   
}

ここでの問題は、コンソールにエラーを出力して続行を中断するべきではないということです。条件が満たされた場合にのみ、この時点で条件の猶予期間内でも値を入力すると、「エラー」が出力されて停止します。

私はこの問題を解決する人を本当に探しているわけではありません。誰かに解決してもらうことなく、自分が間違っていることを知りたいと思っています。適切な言葉で言えば、ヒント/ヒントを探しています。

4

1 に答える 1

0

この行はこちら

     }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

     }

インデックス 2 または 3 の要素がゼロでない場合はいつでもエラーが表示されます。配列要素を初期化しないため、ループの開始時に値がゼロ以外になる可能性は十分にあります。そうでないことを確認するには、開始する前にすべての要素にゼロを割り当てることができます。cinあなたのコードが何をしようとしているのかわかりませんが、ユーザーがatにゼロ以外を入力するi = 2と、ループがエラー出力で中断されますi = 3(ブロックの最初の条件が満たされていないと仮定しますが、その条件が満たされた場合とにかくループも終了します)ifif-else

于 2012-08-07T19:28:00.373 に答える