2016-05-16 26 views
-5

間違いを教えてください。それはコンパイルされ、正常に実行されますが、プログラムは終了しません。C++プログラムは終了しません

私はdev C++を使用しています。コードはありません:

#include <iostream> 
using namespace std; 

main() 
{ 

    char num; 
again: 

    int usr; 
    float area; 

    cout << "\nEnter 1 to calculate area of rectangle\n"; 
    cout << "Enter 2 to calculate area of trapezoid\n"; 
    cout << "\nEnter your choice: "; 
    cin >> usr; 

    if (usr == 1) 
    { 
     double width, length; 
     cout << "Enter the width of rectangle: "; 
     cin >> width; 
     cout << "Enter the length of rectangle: "; 
     cin >> length; 
     area = length * width; 
     cout << "The area of rectangle is: " << area; 
    } 

    if (usr == 2) { 
     double base1, base2, height; 
     cout << "Enter the base 1 of trapezoid: "; 
     cin >> base1; 
     cout << "Enter the base 2 of trapezoid: "; 
     cin >> base2; 
     cout << "Enter the height of trapezoid: "; 
     cin >> height; 
     area = (((base1 + base2)/2) * height); 
     cout << "The area of trapezoid is: " << area; 
    } 

    cout << "\n\ndo you want to do another calculation?"; 
    cin >> num; 
    { 
     goto again; 
    } 

    if (num == 'y') 
    { 
     goto again; 
    } 

    if (num == 'n') { 
     exit(0); 
    } 
} 
+5

あなたは 'cin >> numを何と期待しましたか? {goto again; } 'するには? – Andrew

+0

私はあなたが最初にそれを改善すべきだと言った –

+0

ブラケットの終わりを取り除いて2回目に尋ねないと、私は 'y'と答えて再度計算をしなければならない。それをもう一度終了しないでください –

答えて

5

決してあなたは(あなたがそうでない)には非常に良い理由がない限り、これまで、gotoを使用しています。

cin >> num;{ 
goto again; 
} 

なぜあなたがそれを書いたのかわかりませんが、それは問題です。あなたが適切な形式でそれを書かれていた場合、それはこの

cin >> num; 
{ 
    goto again; 
} 

のように見えただろうブラケット{}はちょうど(変数のために有用とな)範囲を変更し、それ以外何もしません。 goto again;がまだ実行されるので、無限ループに入ります。

それ以降の2つの条件は正常ですので、{ goto again; }を削除するだけで問題が修正されます。

+0

私はそれを削除するか、それとも私のためにそれを修正することができますそれは他の間違いを知っていることを確認してくださいそれを確認してください –

+0

@AnamMiR場合は、 、あなたのプログラムは終了します。 – Rakete1111

+0

cout << "\ n \ n別の計算をしますか?"; cin >> num; goto again; if(num == 'y') goto; if(num == 'n'){ exit(0);} } –

0

削除行のコードには44

あなたのコード

cin >> num;{ 
goto again; 
} 

ソリューション

後藤再び

cin >> num;{ 

} 

この意志ゾルを削除しませんあなたの問題は

+0

'cin >> num;'の後ろにあるかっこについては本当ですか?彼らはどのような目的を果たしていますか? –

+0

あなたは括弧を削除することができます。 – vab

+0

は、プログラムを書き換えて終了するのに役立ちます –

関連する問題