Я пытаюсь создать программу, которая будет угадывать номер, который вы вводите. Я немного смущен тем, что я делаю неправильно. Программа компилируется, и все работает, но до определенной степени. Программа работает до тех пор, пока она не спросит вас о вводе после того, как она угадает 2 раза. В третий раз программа выходит. Например, мой номер равен 700. Программа всегда будет предполагать 500 в первый раз. Поскольку 700 - более 500, вы выбрали вариант «Высшее» (код ниже). Программа изменит переменную «Низкий» От 0 до 500, текущая догадка. Затем он добавит «Низкий» к «Высокий» (1000 при первом предположении) и изменит ответ на переменную «Угадай». Затем он примет переменную «Угадай» и разделит ее на 2, сделав это новой догадкой, а затем напечатав ее как предположение в программе. Так что, если число было более 500, второе предположение было бы 750. Теперь на этот раз уравнение изменится. Он изменит переменную «Высокий» на текущую догадку и снова добавит «Низкий» к «Высокий». Ответ будет изменен на догадку, а затем еще раз делен на 2, давая 625. Поскольку 700 все еще выше 625, он снова будет использовать уравнение с первого входа. Но вместо этого программа просто выходит. Любая помощь? Если мне нужно будет уточнить (снова), скажите об этом. Я предполагаю, что я делаю что-то неправильно в цикле, если где яC++ If Loop Error
if (status == ...)
и так далее.
Код:
#include #include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int main()
{
int number,low,high,guess,guesses,status;
low = 0;
high = 1000;
guesses = 0;
cout<<"Please pick a number between 1 and 1000 \n";
do
{
cin>>number;
if (number > 1000) cout<<"Please pick a number less than 1000 \n";
} while (number > 1000);
cout<<"Thank you. Now I will guess your number! \n";
guess=500;
cout<<"Is your number "<<guess<<"? \n";
cout<<"[1] Yes \n"<<"[2] Higher \n"<<"[3] Lower \n";
do
{
cin>>status;
if ((status != 1) && (status != 2) && (status != 3)) cout<<"Please select option 1, 2, or 3 \n";
} while ((status != 1) && (status != 2) && (status != 3));
do
{
if (status == 2)
low=guess;
guess=low+high;
guess=guess/2;
guesses=guesses+1;
cout<<"Is your number "<<guess<<"? \n";
cout<<"[1] Yes \n"<<"[2] Higher \n"<<"[3] Lower \n";
cin>>status;
if (status == 3)
high=guess;
guess=low+high;
guess=guess/2;
guesses=guesses+1;
cout<<"Is your number "<<guess<<"? \n";
cout<<"[1] Yes \n"<<"[2] Higher \n"<<"[3] Lower \n";
cin>>status;
if (status == 1)
cout<<"I guessed your number! It only took me "<<guesses<<" tries to guess it!";
} while ((status = 3) && (status = 2) && (status = 1));
return 0;
}
Первая строка в последнем цикле 'if (status = 2);' вероятно, не то, что вы намеревались. Он всегда меняет статус на 2 и ничего больше. Вы хотите что-то вроде 'if (status == 2) {...}'. Редактировать: Мой совет - всегда использовать '{}' после 'if', чтобы сделать код менее подверженным ошибкам, особенно если вы новичок. –
Если вы «получаете ошибки в строках 28, 36 и 44», то ваша программа делает ***, а не компиляцию ***. При работе с компьютерами в целом «я получаю ошибки» не считается приемлемым описанием проблемы. При программировании вдвойне. –
^^^ ошибка/предупреждающие сообщения пожалуйста. Также обратите внимание, что в разделах SO code нет номеров строк. –