Другие языки программирования и технологии

Завтра уже сдавать!!! С++

Дана строка, изображающая арифметическое выражение вида «<циф-
ра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится
символ «+» или «–» (например, «4+7–2–8»). Вывести значение данного
выражения (целое число).
BB
Bek Bbk
143
Пусть выражение записано в строке s.

Заведем две переменные: sum для накопления результата и znak для запоминания знака последней операции (1 для +; −1 для −). Прибавляемое число (полученное из символа цифры путем вычитания символа '0') будем домножать на знак и результат прибавлять к нашей сумме.

'0' - '0' = 0
'1' - '0' = 1
'2' - '0' = 2

'9' - '0' = 9

Рассмотрим пример: 3−1

sum = 0; znak = 1

Встретили s[i] = '3'.
sum = sum + znak * (s[i] - '0') = 0 + 1 * 3 = 3

Встретили s[i] = '−'.
znak = −1

Встретили s[i] = '1'.
sum = sum + znak * (s[i] - '0') = 3 + (−1) * 1 = 3 − 1 = 2

Итог:
sum = 2

Код я не запускал, но примерно такой:

int sum = 0;
int znak = 1;

for (int i = 0; s[i] > 0; i++)
{
if (s[i] == '-')
znak = -1;
else if (s[i] == '+')
znak = 1;
else
sum = sum + znak * (s[i] - '0');
}
СШ
Сергей Шабаров
88 380
Лучший ответ
#include iostream
LI
Levan Imedadze
63 228
Я бы строку загнал в stringstream:

#include< sstream>
#include< ios>
#using namespace std

stringstream ss("1+2-3+4", ios_base::in);

Потом прочитал первое число
int n;
ss >> n;

Потом зациклил до конца строки
int t; char c;
ss >> c >> t;
if (c=='+') n+=t;
else if (c=='-') n-=t;
else break;

условие продолжения ss.good() - чтение проходит без ошибок.
результат будет в n
Так сдавай, я не против. Напиши и сдавай.
А не знаешь как, иди торговкой работай на рынок. Какое тебе программирование?

Зачем вы вообще учиться идете если ни в зуб ногой?
Saidahmad Halikov
Saidahmad Halikov
10 887