Ошибка: «Ответ» не был объявлен в этой области

0
#include <iostream>
#include <math.h>
#include <string.h>

using namespace std;

int main ()
{
    cout << "My Funny Program";

    do {
        string Answer;
        cout << "Are you stupid? (Yes/No)";
        cin >> Answer;
        cout << endl;
        cout << "Perhaps you are lying?";
    }
    while (Answer == "No");

    cout << "Thank you for your honesty." << endl;

    return 0;
}

Я пытался заставить этот код работать; однако, каждый раз, когда появляется сообщение об ошибке "Ответ не был объявлен в этой области".

Теги:

5 ответов

1

Я считаю, что условие while находится за пределами области действия, если сам блок. Поэтому string Answer должна быть определена вне цикла.

Рекомендация стиля. Шапки используются для классов или констант или макросов. Избегайте использования их для переменных.

0
do {
        string Answer;
        cout << "Are you stupid? (Yes/No)";
        cin >> Answer;
        cout << endl;
        cout << "Perhaps you are lying?";
    }
    while (Answer == "No");

В do вы объявили переменную строку Answer. Затем Answer был вставлен в стек, однако, когда процедура закроется }, переменная будет всплывать, что означает, что в выражении while Answer был освобожден, а компилятор рассматривает Answer как неопределенную переменную.

0

В настоящее время ваша переменная Answer находится только в области видимости между {} где она объявлена (внутри тела цикла). Вам нужно объявить Answer перед циклом.

string Answer;
do {
    cout << "Are you stupid? (Yes/No)";
    cin >> Answer;
    cout << endl;
    cout << "Perhaps you are lying?";
}
while (Answer == "No");
0

Интересная программа...

Объявление ответа вне цикла do-while будет решать вашу проблему.

string Answer;
do {

        cout << "Are you stupid? (Yes/No)";
        cin >> Answer;
        cout << endl;
        cout << "Perhaps you are lying?";
    }
    while (Answer == "No");

Также вы должны использовать <string> вместо <string.h>

0
 do{

        string Answer;
        cout<< "Are you stupid? (Yes/No)";
        cin>>Answer;
        cout<< endl;
        cout<< "Perhaps you are lying?";

    }

    while (Answer == "No");

Поскольку ответ объявляется внутри do-while, часть while не имеет представления о существовании ответа.

Вы должны объявить ответ перед выполнением

Ещё вопросы

Сообщество Overcoder
Наверх
Меню