0

このプログラムを修正してください。z をカウントしません。

int main()
{
    using namespace std;
    int x, y, z, a;
    cout << "Please enter a number" << endl;
    cin >> x;
    cout << "Please enter another number" << endl;
    cin >> y;
    cout << "What do you want to do with these numbers?" << endl;
    cout << "1 = +" << endl;
    cout << "2 = -" << endl;
    cout << "3 = *" << endl;
    cout << "4 = /" << endl;
    cin >> a;

    do {
        z = add(x, y);
    } while (a == 1);

    do {
        z = sub(x, y);
    } while (a == 2);

    do {
        z = mul(x, y);
    } while (a == 3);

    do {
        z = dis(x, y);
    } while (a == 4);

    cout << z;
    return 0;
}

do while ステートメントを使用してみましたが、動作しません。---編集--- 適切なインデントを追加しましたが、なぜ原子的にそうしないのですか?

4

3 に答える 3

2

どのオプションを入力しても、その do-while ループに入り、条件が常に満たされるため、終了することはありません。元。1 を入力すると、次のように入力されます。

do {
    z = add(x, y);
} while (a == 1);

a は常に 1 であるため、これを終了することはありません。他の条件も同様です。代わりに、switch ステートメントを使用できます。何かのようなもの :

switch(a) {
    case 1 : z = add(x, y);
             break;
    case 2 : z = sub(x, y);
             break;
    case 3 : z = mul(x, y);
             break;
    case 4 : z = div(x, y);
             break;
    default : cout<<"Please choose a valid option to proceed.";
}
cout << z;
return 0;

また、そのような場合は do-while を使用しません。ループを終了しても、do-while はループに入り、続いて条件をチェックするため、常に除算 (x, y) されます。ただし、次のような while ループを使用できます。

while(a==1) {
    z = add(x, y);
    a = -1;
}

while(a==2) {
    z = sub(x, y);
    a = -1;
}

while(a==3) {
    z = mul(x, y);
    a = -1;
}

while(a==4) {
    z = div(x, y);
    a = -1;
}
于 2013-03-02T10:07:02.290 に答える
0

ステートメント:

 while( 1 >= a <= 4)

は正しくありません [まあ、これは正しい C 構文ですが、望んでいたものではない可能性が高いです]:

while( (1 >= a) <= 4);

また、 の結果(1 >= a)は または のいずれ01であるため、常に<= 4です。あなたがする必要があります:

while ( (1 >= a) && (a <= 4) );  

[括弧はわかりやすくするために、内側の 2 つの括弧を削除できます]

于 2013-03-02T10:26:42.777 に答える
-1

あなたのコードは無限ループに入っています。そのように修正してください

   int main()
{
using namespace std;
int x, y, z, a;
do
{
cout << "Please enter a number" << endl;
cin >> x;
cout << "Please enter another number" << endl;
cin >> y;
cout << "What do you want to do with these numbers?" << endl;
cout << "1 = +" << endl;
cout << "2 = -" << endl;
cout << "3 = *" << endl;
cout << "4 = /" << endl;
cin >> a;
switch(a)
{
  case 1:
    z = add(x, y);
    break;
  case 2:
    z = sub(x, y);
    break;
  case 3:
    z = mul(x, y);
    break;
  case 4:
    z = dis(x, y);
    break;
}  
cout << z;
} while( 1 >= a <= 4)
return 0;
}

ロココの提案に従って修正

于 2013-03-02T10:06:27.520 に答える