C ++ Если / иначе / проблемы с вложенностью - PullRequest
1 голос
/ 03 ноября 2010

Я пытаюсь выучить c ++, и у меня возникают проблемы с моими операторами if / else.Я думал, что у меня их было, когда я вкладывал их, не открывая и не закрывая скобки, но я пробовал с фигурными скобками, и я получал ошибки.

Может кто-то указать, что не так и как это исправить, а не просто ответ;таким образом я ничему не научусь.

вот мой источник:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
 signed long int RealNumber = 31710;
 int Guess;

 cout << "Lets see if you can guess my favorite number... \n";
 cout << "Type in a number and hit enter to see if you have guessed it correctly. \n";
 cout << "you should know this one Danielle. \n \n ";
 cin >> Guess;


 if (Guess == RealNumber)
 {
  cout << "Wow, you are amazing! \n";
  cout << "Would you like to be punched?";
 }
 else
 {
  if (Guess < RealNumber)
   cout << "The number is higher";
  else
   if (Guess > RealNumber)
    cout << "The number is lower";
   else
    cout << "That is impossible!"; //trying to make sure that if anthing but a number is entered that the program doesn't crash.
 }

}
 char f;  // used to make the program wait for input before closing. 
 cin >> f;

 return 0;

Ответы [ 7 ]

5 голосов
/ 03 ноября 2010

У вас есть лишняя скобка чуть выше строки с надписью-

char f; 
cin >> f; 

эта закрывающая скобка соответствует начальной скобке вашей основной функции.

Мне кажется, что структура поддержки, которую вы использовали во вложении if / else, мне подходит.

Вот подсказка - для каждой открывающей скобки немедленно введите закрывающую скобку и добавьте к ней комментарий. Вы не должны использовать этот «костыль» вечно, но как новичок, который учится писать код, это может быть очень полезно.

Шаг 1:

int main()
{
}//main 

Шаг 2:

int main()
{
    int foo; 
    cin >> foo; 
    if (foo < 100)
    {
        //todo 
    }// if (foo < 100)
}//main

Шаг 3:

int main()
{
    int foo; 
    cin >> foo; 
    if (foo < 100)
    {
        cout << "foo is too small";
        cin >> foo; 
        if (foo < 100)
        {
            //todo 
        } // if (foo < 100), inner if statement 
    }// if (foo < 100)
}//main

и т.д..

2 голосов
/ 03 ноября 2010

Пожалуйста, посмотрите на ответ Дэвида. Я хотел бы также отметить, что обычно вы хотели бы написать свой код if-else следующим образом:

 if (Guess == RealNumber)
 {
   cout << "Wow, you are amazing! \n";
   cout << "Would you like to be punched?";
 }
 else if (Guess < RealNumber)
 {
   cout << "The number is higher";
 }
 else if (Guess > RealNumber)
 {
   cout << "The number is lower";
 }
 else
 {
    cout << "That is impossible!";
 }

или

 if (Guess == RealNumber)
 {
   cout << "Wow, you are amazing! \n";
   cout << "Would you like to be punched?";
 }
 else if (Guess < RealNumber)
   cout << "The number is higher";
 else if (Guess > RealNumber)
   cout << "The number is lower";
 else
    cout << "That is impossible!";
2 голосов
/ 03 ноября 2010

Рекомендуется использовать текстовый редактор с автоматическим отступом.Это может помочь вам избежать «простых» ошибок, подобных этой.

1 голос
/ 03 ноября 2010

Вы должны использовать {}, если у вас есть цепочки if-else. Компилятор не видит, как вы отступили в if-else (начиная с «Число выше»), и видит его как одну плоскость if-elseif-else. Тем не менее, я не вижу, что это вызывает у вас проблемы в данном конкретном случае.

1 голос
/ 03 ноября 2010

Попробуйте это

#include <iostream>
using namespace std;

int main()
{
 signed long int RealNumber = 31710;
 int Guess;

 cout << "Lets see if you can guess my favorite number... \n";
 cout << "Type in a number and hit enter to see if you have guessed it correctly. \n";
 cout << "you should know this one Danielle. \n \n ";
 std::cin >> Guess;


 if (Guess == RealNumber)
 {
  cout << "Wow, you are amazing! \n";
  cout << "Would you like to be punched?";
 }
 else
 {
  if (Guess < RealNumber)
   cout << "The number is higher";
  else
   if (Guess > RealNumber)
    cout << "The number is lower";
   else
    cout << "That is impossible!"; //trying to make sure that if anthing but a number is entered that the program doesn't crash.
 }

 char f;  // used to make the program wait for input before closing. 
 std::cin >> f;

 return 0;
} // <-- this bracket was misplaced

Ваш main() кронштейн не на своем месте.

0 голосов
/ 03 ноября 2010

Удалите #include <stdafx.h> (и, если это проект Visual Studio, отключите «предварительно скомпилированные заголовки» в настройках проекта).

Переместите операторы, которые вы поместили после заключительной скобки } main, перед этой скобкой.

Вы не можете иметь необъявленные операторы вне функции.

Ура & hth.

0 голосов
/ 03 ноября 2010

Попробуйте сосчитать открывающую и закрывающую скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...