Мне нужно написать программу, в которой она просит вас ввести два целых числа, а затем выводит те же самые два целых числа, но если вы введете «|», это завершит программу.
Это то, что у меня есть, для меня это должно работать, но, к сожалению, это не так.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int var1 = 0;
int var2 = 0;
while(1)
{
cout << "Please enter two numbers.\n";
cin >> var1;
cin >> var2;
if(var1 == '|')
break;
else
{
if(var2 == '|')
break;
else
{
cout << var1 << ' ' << var2 << '\n';
}
}
}
}
Я уверен, что мне не хватает какой-то простой концепции, но любая помощь, очевидно, будет принята с благодарностью.
Когда вы читаете целое число, пользовательский ввод, как |
просто вызовет (тихую) ошибку, которая ставит cin
в режиме ошибки.
До сброса режима ошибки дальнейшие операции ввода игнорируются, поэтому вы получаете бесконечный цикл.
Вместо этого читайте пользовательский ввод как строки, используя std::getline
от <string>
заголовок. Проверьте, начинается ли строка ввода цифрой или «|». Если цифра, преобразуйте в целые числа, используя, например, std::stoi
,
Встроенный синтаксис языка для бесконечного цикла for(;;)
, Он имеет практическое преимущество в том, что Visual C ++ не выдаст глупого предупреждения о выражении константного условия.
Вместо всего кода, начиная с if(var1 == '|')
, сделай это:
if ( !cin )
break;
cout << var1 << ' ' << var2 << '\n';
Когда вы используете <<
читать в int
и если на самом деле входные данные не содержат int, то он помещает cin
в состояние отказа . тестирование !cin
проверяет, если cin
находится в состоянии сбоя.
Чтобы узнать больше об этом, прочитайте любую книгу или справочник по C ++.
Попробуйте использовать объявление var1 и var2 в качестве типа char
если требуется int, попробуйте
if(var2 == 124)
ваши var1 и var2 не могут быть целочисленными, если вы хотите принимать любые символы, кроме числовых. Так что вы должны объявить с помощью char любую строку.
Я уверен, что вам понадобится оба числа для выполнения какой-либо функции вычисления, поэтому преобразуйте var1 и var2 из строки в целочисленный тип.
обратитесь к этому:
http://en.cppreference.com/w/cpp/string/basic_string/stol
Этот ответ на ваш вопрос «Как закончить программу»
ты можешь использовать
exit(1);
пример кода:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main()
{
string var1,var2;
int num1,num2;
cout << "Please enter two numbers.\n";
cin>>var1;
if(var1 != "|")
{
num1 = ::atoi(var1.c_str());
}
else
{
cout<<"Programs Terminated."<<endl;
exit(1);
}
cin>>var2;
if(var2 != "|")
{
num2 = ::atoi(var2.c_str());
}
else
{
cout<<"Programs Terminated."<<endl;
exit(1);
}
cout<<"\nSum of 2 number: "<<num1+num2<<endl;
}