Informatică, întrebare adresată de LorenaMaria2005, 9 ani în urmă

AJUTOR VA ROG!!!
DAU CORANA!!!
Se dă o expresie care conţine numere naturale despărţite de semne de adunare sau scădere. Să se calculeze rezultatul expresiei.
DATE DE INTRARE
Fişierul de intrare plusminus.in conţine un număr de linii. Pe fiecare linie, mai puţin ultima, se află cîte un număr natural urmat de un spaţiu şi de un semn. Semnul poate fi doar '+' sau '-'. Ultima linie a fişierului conţine doar un număr natural urmat de caracterul sfîrşit de linie.
DATE DE IESIRE
În fişierul de ieşire plusminus.out va conţine un singur număr, rezultatul calculului expresiei din fişierul de intrare.
RESTRICTII
1 ≤ numărul de numere ≤ 250 0000 ≤ număr din expresie ≤ 8000 EXEMPLU:
sumacifre.in
34 +
28 -
13 +
80 -
100
sumacifre.out
29

Răspunsuri la întrebare

Răspuns de radutanasa86
2
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plusminus.in");
ofstream fout("plusminus.out");
int sol;
char cuv[500005];
void Rezolvare()
{
    int semn=1,numar,i;
    while(fin.getline(cuv,500005))
    {
        for(i=0;cuv[i];)
        {
            if(cuv[i]=='-')
            {
                semn=-1;
                i++;
            }
            else if(cuv[i]=='+')
            {
                semn=1;
                i++;
            }
            else if(cuv[i]==' ')
                i++;
            else
            {
                numar=0;
                while('0'<=cuv[i] and cuv[i]<='9')
                {
                    numar=numar*10+cuv[i]-'0';
                    i++;
                }
                sol+=numar*semn;
            }
        }
    }
    fout<<sol<<"\n";
}
int main()
{
    Rezolvare();
    fin.close();
    fout.close();
    return 0;
}


Alte întrebări interesante