Cod sursa(job #1133085)

Utilizator omerOmer Cerrahoglu omer Data 4 martie 2014 13:34:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.94 kb
#include <iostream>
#include<stdio.h>
using namespace std;
FILE *f,*g;
struct Chestie
{
    int adut,prodt;
    char prodl,adul;
};

Chestie a[100000];
int curr;

int main()
{
    char c;int i=0;
    a[0].adut=0;a[0].prodt=1;a[0].adul='+',a[0].prodl='*';
    f=fopen("evaluare.in","r");
    g=fopen("evaluare.out","w");
    c=fgetc(f);
    while(c!='\n')
        {
            if (c=='(') {i++; a[i].adut=0;a[i].prodt=1;a[i].prodl='*';a[i].adul='+';}
             else {if (c==')')
                {
                   if (a[i].prodl=='*') a[i].prodt*=curr;
                   else a[i].prodt/=curr;
                   if (a[i].adul=='+') a[i].adut+=a[i].prodt;
                   else a[i].adut-=a[i].prodt;
                   curr=a[i].adut;
                   i--;
                }
            else {if (0<=c-'0'&&c-'0'<=9) curr=curr*10+c-'0';
            else
                {
                    if (c=='+'||c=='-')
                        {
                            if (a[i].prodl=='*') a[i].prodt*=curr;
                            else a[i].prodt/=curr;
                            if (a[i].adul=='+') a[i].adut+=a[i].prodt;
                            else a[i].adut-=a[i].prodt;
                            curr=0;
                            a[i].prodt=1;
                            a[i].prodl='*';
                            a[i].adul=c;
                        }
                    else
                        {
                            if (a[i].prodl=='*') a[i].prodt*=curr;
                            else a[i].prodt/=curr;
                            curr=0;
                            a[i].prodl=c;
                        }
                }}}
                c=fgetc(f);

        }
    if (a[0].prodl=='*') a[0].prodt*=curr;
    else a[0].prodt/=curr;
    if (a[0].adul=='+') a[0].adut+=a[0].prodt;
    else a[0].adut-=a[0].prodt;
    fprintf(g,"%d",a[0].adut);








    return 0;
}