Cod sursa(job #1249311)
Utilizator | Data | 26 octombrie 2014 19:59:10 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 2.06 kb |
#include<fstream>
#include<string>
#include<iostream>
using namespace std;
struct h
{
string a;
int x;
}v[100];
int main()
{
ifstream si;
si.open("reteta2.in");
ofstream so;
so.open("reteta2.out");
string s="",g;
char a;
int k,n=0,z,q=0;
while(si>>a)
s+=a;
int d=0,j;
int m=s.length(),i;
for(i=0;i<m;++i)
{
a=s[i];
if('a'<=a&&a<='z')
{
g+=a;
if('a'>s[i+1]||'z'<s[i+1])
{
d=1;
z=0;
++i;
while('0'<=s[i]&&s[i]<='9'&&i<m)
{
z=z*10+s[i]-'0';
++i;
}
for(j=0;j<n;++j)
{
if(v[j].a==g)
{
v[j].x+=z;
d=0;
break;
}
}
if(d==1)
{
for(j=0;j<n;++j)
if(v[j].a>g)
{
for(k=n-1;k>=j;--k)
v[k+1]=v[k];
v[j].a=g;
v[j].x=z;
d=0;
++n;
break;
}
if(d==1)
{
++n;
v[n-1].a=g;
v[n-1].x=z;
}
}
--i;
g="";
}
}
else
if(a==')')
{
z=0;
++i;
while('0'<=s[i]&&s[i]<='9'&&i<m)
{
z=z*10+s[i]-'0';
++i;
}
--i;
q=q+z;
}
}
so<<q;
for(i=0;i<n;++i)
so<<v[i].a<<' '<<v[i].x<<endl;
}