269
Se consideră o expresie formată din numere naturale și operatorii +
, -
, *
.
Cerința
Să se evalueze expresia.
Date de intrare
Programul citește de la tastatură expresia.
Date de ieșire
Programul va afișa pe ecran un singur număr reprezentând valoarea expresiei.
Restricții și precizări
- Lungimea expresiei va fi de cel mult
50
de caractere - Rezultatul final precum și rezultatele intermediare se vor încadra în tipul de date
long long
- Expresia este corectă și nu conține alte caractere în afară de cifre și operatorii
+
,-
,*
.
Exemplu
Intrare
234-10+21*12
Ieșire
476
#include <bits/stdc++.h> using namespace std; char s[60]; long long v[60] , c , x , suma; int Cifra(char s){return (s >= '0' && s <= '9');} int main() { int semn = 1 , ori = 0 , i = 0; cin >> s; while(s[i] != '\0') { if(!Cifra(s[i])) { if(s[i] == '+') semn = 1; else if(s[i] == '-') semn = -1; else if(s[i] == '*') ori = 1; else ori = 0; i++; } else { x = 0; while(Cifra(s[i])) { x = x * 10 + s[i] - '0'; i++; } x *= semn; if(ori == 1) v[c] = v[c] * x; else v[++c] = x; semn = 1; ori = 0; } } for(i = 1 ; i <= c ; i++) suma += v[i]; cout << suma; return 0; }
Comentarii