-2

私は計算プログラムを作成しようとしています。このプログラムが実行されると、ユーザーに別の計算を行うかどうかを尋ねます。これは、メイン関数の適切なポイントで呼び出される別個の関数の形式を持っています。

char repeatcalc(char y){

    cout << "Would you like to perform another calculation? [Y]es/[N]o" << endl;
    cin >> y;
    if(y == 'Y' || y == 'y'){
        return y == 'y';
    }
    else if(y == 'N' || y == 'n'){
        return y == 'n';
    }
    else{
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        repeatcalc(y);
    }
}

つまり、ユーザーがボタンを押すと、関数は「y」、「n」のいずれかを返すか、それ自体を繰り返します。次に、これはメイン関数のwhileループにフィードバックされます。このループは、「y」が返されると繰り返され、「n」が返されると終了します。

上記の関数の繰り返しセクションは、メインコードで機能し、「y」が返されますが、「n」が選択されている場合は、とにかく「y」が返されるようです。

明らかなものが欠けていますが、何がわからないのです!助言がありますか?

ありがとう。

4

1 に答える 1

0

関数を変換してboolを返します。例えば:

 if (y == 'Y' || y == 'y') return true; 
 if (y == 'N' || y == 'n') return false;

..。

return repeatcalc() ;

yローカルchar変数であること。このように、関数は引数を必要としません。そして、あなたは簡単に尋ねることができますif (repeatcalc() ) reapeat;

また、注意してください:あなたが評価をしようとしている間、==比較して返すためのものです:この場合はちょうどですboolreturn y='y';return 'y';

于 2013-02-01T17:16:37.110 に答える