Pagini recente » Cod sursa (job #1562719) | Cod sursa (job #2671031) | Cod sursa (job #397654) | Cod sursa (job #2311432) | Cod sursa (job #627945)
Cod sursa(job #627945)
#include<fstream.h>
#include<iostream.h>
using namespace std;
int a[100001],b[10001],d[100001],i,j,n,nr=1,li,lf,num,nu,ns,u,s,iv;
char c;
void inlocuire(int s,int li,int ln)
{
int y=0,u1=0,t=1;
y=s;
while(y!=0)
{
u1++;
y/=10;
t*=10;
}
for(i=1;i<=u1;i++)
{
y=s;
y=(y%t)/(t/10);
t/=10;
c=y;
a[li+i-1]=c+48;
}
t=lf-(u1+li)+1;
for(i=u1+li;i<=n;i++)
{
c=a[t+i];
a[i]=c;
}
}
void inmultiri(int &nu,int &s)
{
for(i=1;i<nu;i++)
{
if(d[i]==42)
{
b[i+1]=b[i]*b[i+1];
for(u=i;u<nu;u++)
{
b[u]=b[u+1];
d[u]=d[u+1];
}
d[nu]=0;
nu--;
i=0;
}
else
if(d[i]==47)
{
b[i+1]=b[i]/b[i+1];
for(u=i;u<nu;u++)
{
b[u]=b[u+1];
d[u]=d[u+1];
}
d[nu]=0;
nu--;
i=0;
}
}
for(i=1;i<nu;i++)
{
if(d[i]==43)
{
b[i+1]=b[i]+b[i+1];
for(u=i;u<nu;u++)
{
b[u]=b[u+1];
d[u]=d[u+1];
}
d[nu]=0;
nu--;
i=0;
}
if(d[i]==45)
{
b[i+1]=b[i]-b[i+1];
for(u=i;u<nu;u++)
{
b[u]=b[u+1];
d[u]=d[u+1];
}
d[nu]=0;
nu--;
i=0;
}
}
s=b[1];
}
void transforma(int &li,int &lf)
{
i=li;
nu=0;
while(i<=lf)
{
num=0;
if(a[i]>=48&&a[i]<=57)
{while(a[i]>=48&&a[i]<=57)
{
num=num*10+a[i]-48;
i++;
}
b[++nu]=num;}
d[nu]=a[i++];
}
}
void paranteze(int &li,int &lf)
{
i=1;
li=0;
lf=0;
while((li==0||lf==0)&&i<=n)
{if(a[i]==41)
lf=i;
else
if(a[i]==40)
li=i;
i++;
}
if(i>n)
{li=1;
lf=n;}
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
while(f>>c)
{
if(c=='(')
nr++;
a[++n]=c;
}
for(iv=1;iv<=nr;iv++)
{
paranteze(li,lf);
transforma(li,lf);
inmultiri(nu,s);
inlocuire(s,li,lf);
li=1;
while(a[li]!=0)
li++;
li--;
n=li;
}
g<<b[1];
return 0;}