Что не так с этим кодом C ++?(необъявленный идентификатор) - PullRequest
1 голос
/ 27 февраля 2012

Получение этой ошибки: (68): error C2065: 'programend' : undeclared identifier

(Примечание не по теме: я знаю, что использование пространства имен 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;
}

Ответы [ 3 ]

5 голосов
/ 27 февраля 2012

если вы возьмете содержимое do ... while, вы увидите, что programend не объявлено в нужной области:

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

Оно должно быть объявлено между main иdo будет доступно.

0 голосов
/ 27 февраля 2012

ваше объявление о программе находится внутри блока do inner, но вы проверяете его в завершении: вы можете выйти наружу, например, наверху.И инициализировать его:

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

И объявить переменную для чтения cin:

 int ch;
 cin >> ch;
 switch (ch) {
  ...
 }
0 голосов
/ 27 февраля 2012

вы объявляете programend как логическое значение, но проверяете как символ

 bool 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...