Pagini recente » Cod sursa (job #1042053) | Cod sursa (job #16949) | Cod sursa (job #785569) | Cod sursa (job #1505340) | Cod sursa (job #1133085)
#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;
}