Уже не могу ответить в следующем вопросе, так что на тот вопрос дам ответ тут.
"но проблема в том, что это будет работать только с первым выражением (200+20=0),а вот со вторым (200)он просто будет ждать пока пользователь введет все числа. "
Можно решить множеством способов, я бы считывал посимвольно и далее парсил на числа/знаки, например как в калькуляторе у Страуструпа в его книге или считывал строку и парсил её.
Тем не мение, привожу в качестве примера код максимально близкий к вашему:
#include
#include
using namespace std;
int main(){
string str;
getline(cin, str);
stringstream sstr(str);
int digit1(-1) ,digit2(-1),digit3(-1);
char ch1('0'),ch2('0');
sstr >> digit1 >> ch1 >> digit2 >> ch2 >> digit3;
if ((ch1 == '+'||ch1 == '-'||ch1 == '/'||ch1 == '*') && (digit1>-1) && (digit2>-1) && (digit3>-1) && (ch2=='='))
{
switch(ch1)
{
case '+' :
digit1 = digit1+digit2;
break;
case '-' :
digit1 = digit1-digit2;
break;
case '/' :
digit1 = digit1/digit2;
break;
case '*' :
digit1 = digit1*digit2;
break;
}
if (digit1==digit3)
{
cout << "YES";
}
else
{
cout << "NO";
}
}
else{
cout << "ERROR" << endl;
}
system("Pause >> null");
return 0;
}
Здесь считывается строка, а далее используется интерфейс для работы со строками в стиле потоков ввода-вывода. Также немного поправил условие в if.
Проверяй по символу, если цифра - загоняй в отдельный массив (как вариант - сразу добавляй к результату) , если не цифра - переводи массив в число и выводи результат.
#include
using namespace std;
int main(){
char str[] = "400+100=500";
int ar[3],counter(10);
int a,j(0);
char ch;
for(int i(0); i < 3; i++) // обнуляем массив чисел
ar[i] = 0;
for(int i(0); str[i]; i++){ // проверяем каждый символ
ch = str[i]; // символ отделяем)
a = atoi(&ch); // символ переводим
if(a >= 0 && a <= 9 && isdigit(str[i])) { // только число
ar[j] = (ar[j] * counter) + a; // увеличивая разряд предыдущего числа, добавляем цифру
}
else j++; // как только попадается знак (+,* и т. п. ) значит уже будет другое число
}
for(int i(0); i < 3; i++) // выводим массив чисел
cout << ar[i] << endl;
system("pause > nul");
return 0;
}