# PBinfo #4757 – sir_eval – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Vi se dă o expresie de forma v=a+b sau de forma v=a*b, unde v este numele unei variabile, iar a și b sunt două numere naturale. Trebuie să evaluați rezultatul expresiei.

Date de intrare
Fișierul de intrare sir_eval.in conține pe prima linie expresia.

Date de ieșire
Fișierul de ieșire sir_eval.out va conține rezultatul expresiei în forma v=nr, unde v este numele variabilei, iar nr este rezultatul operației.

Restricții și precizări

Numerele a și b sunt naturale de cel mult 4 cifre.
Numele variabilei este format doar din litere mici și are lungimea cel mult 10.
Expresia citită nu conține spații, și de asemenea expresia afișată nu trebuie să conțină spații.

Exemplul 1:
sir_eval.in

sol=15+115
sir_eval.out

sol=130
Exemplul 2:
sir_eval.in

produs=15*100
sir_eval.out

produs=1500

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sir_eval.in");
ofstream fout("sir_eval.out");
char s[30], numeVar[12];
int main()
{
    int i, a, b;
    char op;
    fin >> s;
    /// pozitionare pe '='
    for (i = 0; s[i] != '='; i++)
        ;
    s[i] = 0;
    strcpy(numeVar, s);
    i++;
    /// constructie a
    a = 0;
    while ('0' <= s[i] && s[i] <= '9')
    {
        a = a * 10 + s[i] - '0';
        i++;
    }
    op = s[i];
    i++;
    /// constructie b
    b = 0;
    while ('0' <= s[i] && s[i] <= '9')
    {
        b = b * 10 + s[i] - '0';
        i++;
    }
    if (op == '+') a += b;
    else a *= b;
    fout << numeVar << "=" << a << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4757)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4757/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4757/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
