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
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;
}
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
Ed. muzicală,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă