2012-02-27 14 views
1

このエラーを取得:(68): error C2065: 'programend' : undeclared identifierこのC++コードで何が問題になっていますか? (宣言されていない識別子)

(オフトピックノート:私は名前空間stdを使用して使用することは悪い習慣であることを知っているが、私はSTDを入力::すべての前にように感じていなかった私がします。それはここで)しかし、エラーの原因何

をのコードだ場合:...あなたが取る場合

#include <iostream> 

using namespace std; 

int main(void) { 
    do{ 
    system("title Mini-Calc"); 
    cout << "Hello World! Welcome to Dustin's C++ Calculator!" << endl; 
    cout << "To get started, enter a number:" << endl; 

    int operation; 
    double num1, num2, answer; 

    cin >> num1; 
    cout << "Now enter another number:" << endl; 
    cin >> num2; 

    cout << "Please type the corrresponding number for the operation desired, and press enter." << endl; 
    cout << "1 = +, 2 = -, 3 = x, 4 = /" << endl; 

    cin >> operation; 

    switch(operation) { 
     case 1: 
      answer=num1+num2; 
     break; 

     case 2: 
      answer=num1-num2; 
     break; 

     case 3: 
      answer=num1*num2; 
     break; 

     case 4: 
      answer=num1/num2; 
     break; 

    } 

    cout << "The answer is: " << endl; 
    cout << answer << endl; 

    bool programend; 

    cout << "Would you like to end the program? (y for yes, n for no)" << endl; 

    cin >> programend; 

    switch(programend) { 
     case 'y': 
      programend=true; 
     break; 

     case 'n': 
      programend=false; 
     break; 

     case 'Y': 
      programend=true; 
     break; 

     case 'N': 
      programend=false; 
     break; 
     } 
    } while (programend==false); 
    return 0; 
} 
+0

あなたは正しく、あなたは、 'programend'が' do'ループ内で宣言されていることに気づくだろう意図をたい場合'' 'の後ろで参照されます。 –

+1

また、あなたはboolとしてprogramendを宣言しましたが、あなたはcharを望んでいたと思います。 –

+1

また、 'bool'データ型は不正確なケースラベルを使用している間は' true'または 'false'を意味します。 –

答えて

5

行う内容ながら、あなたはprogramendは、右スコープで宣言されていないことがわかります:

int main(void) { 
    do{ 
     ... 
    } while (programend==false); 
    return 0; 
} 

maindoの間に宣言する必要があります。

+0

ありがとうございました! –

0

あなたはブール値としてprogramendを宣言したが

char programend; 

または

bool programend; 
char choice; 

cout << "Would you like to end the program? (y for yes, n for no)" << endl; 

cin >> choice; 

switch(choice) { 
    case 'y': 
     programend=true; 
    break; 
+0

そのため、私はswitch文を持っています。 yまたはnを取り、それを真または偽にする。 –

+0

は、ループ –

+0

の前に 'bool programend'を宣言し、ブール変数である 'programend'変数に' y'または 'n'を取っています。 –

0

あなたを次のように、この目的のために二つの異なる変数を使用するように変更して

bool programend; 

文字などのようにチェックしますprogramendの宣言は内部ブロックの内側にありますが、テストします終了時には、例えば上から外に出ることができます。そして、それを初期化します。

int main(void) { 
    bool programend = false; 
    do { 
    } while (...) 
} 

とCINを読み取るための変数を宣言:

int ch; 
cin >> ch; 
switch (ch) { 
    ... 
} 
関連する問題