Уже не могу ответить в следующем вопросе, так что на тот вопрос дам ответ тут.
"но проблема в том, что это будет работать только с первым выражением (200+20=0),а вот со вторым (200)он просто будет ждать пока пользователь введет все числа. "
Можно решить множеством способов, я бы считывал посимвольно и далее парсил на числа/знаки, например как в калькуляторе у Страуструпа в его книге или считывал строку и парсил её.
Тем не мение, привожу в качестве примера код максимально близкий к вашему:
#include <iostream>
#include <sstream>
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.
Другие языки программирования и технологии
С++ работа с символами Дан к примеру пример строки "400+100=500" и мне надо достать 400 100 500 и перевести в int
Проверяй по символу, если цифра - загоняй в отдельный массив (как вариант - сразу добавляй к результату) , если не цифра - переводи массив в число и выводи результат.
#include <iostream>
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;
}
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;
}
Похожие вопросы
- Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова На С++
- паскаль. нужно считать строку длинной 100 000 символов. тип string до 255. кокой тип подойдет в этом случае???
- Как в Visual C++ 2008 express перевести тип int в string или char?
- Помогите плиз!Определяет какой из двух символ встречается чаще в данной строке? Паскаль
- Нужно на с++ написать программу по заданию:даны две строки, содержащие не более 100 символов. Строки состоят из слов, р
- Дана строка символов. Признак конца строки "\n" (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести
- FASM. Замена символов в строке, используя подпрограммы.
- Строки в С допустим дана строка char str[]="Hello" как к этой строке добавить символ '!' чтобы получилось "Hello!"
- Помогите плизззз! задача в паскале! Дана строка символов. Группы символов, разделенные одним или несколькими пробелами
- Напишите пожалуйста программу в паскале. Дана строка символов,определить количество слов,начинающихся с заданного символа