Pagini recente » Cod sursa (job #2394130) | Cod sursa (job #2122742) | Cod sursa (job #1944341) | Cod sursa (job #2033892) | Cod sursa (job #676659)
Cod sursa(job #676659)
#include<stdio.h>
#include<string.h>
char v[100100];
int plus_min(int &k);
int inm_imp(int &k);
void citire()
{
FILE *f=fopen("evaluare.in","r");
fgets(v,100100,f);
int n=strlen(v);
if(v[n-1]=='\n') v[n-1]=NULL;
fclose(f);
}
int paranteze(int &k)
{
int ret=0;
if(v[k]=='(')
{
++k;
ret = plus_min(k);
++k;
}
else
while(v[k]>='0'&&v[k]<='9')
ret = ret*10+v[k++]-'0';
return ret;
}
int inm_imp(int &k)
{
int ret = paranteze(k);
while(v[k]=='*'||v[k]=='/')
if(v[k++]=='*')
ret =ret * paranteze(k);
else
ret =ret / paranteze(k);
return ret;
}
int plus_min(int &k)
{
int ret = inm_imp(k);
while(v[k]=='+' || v[k] == '-')
if(v[k++] == '+')
ret += inm_imp(k);
else
ret -=inm_imp(k);
return ret;
}
int main()
{
citire();
int k=0;
FILE*f=fopen("evaluare.out","w");
fprintf(f,"%d",plus_min(k));
fclose(f);
return 0;
}