BQ
Bobur Qodirov

С++ работа с символами Дан к примеру пример строки "400+100=500" и мне надо достать 400 100 500 и перевести в int

ВП
Винни Пух

Уже не могу ответить в следующем вопросе, так что на тот вопрос дам ответ тут.
"но проблема в том, что это будет работать только с первым выражением (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;
}

Похожие вопросы
Как инициализировать поля класса типа int из строки
Delphi работа со строками. решение примеров.
Помогите удалить символы в строке!
как в с++ символ дописать к строке? как в с++ символ дописать к строке?
помогите преобразовать строку в int массив (с++)
как в Lua разделить строку на символы
Дана строка символов. Определить длину строки. Если длина строки <=20, то найти в строке порядковый номер символа *
Подскажите что значат указатели в с++. Пример int* Arr int** Arr
Как перевести цифры из char в int(C++)
Строки в С допустим дана строка char str[]="Hello" как к этой строке добавить символ '!' чтобы получилось "Hello!"