Cod sursa(job #1249311)

Utilizator refugiatBoni Daniel Stefan refugiat 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;
}