View Code of Problem 94

#include<stdio.h>
#include<string.h>
int c(int m,int n,char a[1000])
{
int i=m+1,j,sum,k;

if(a[i]=='+')
{sum=0;
for(j=i+1;j<n;j++)
if(a[j]>='0'&&a[j]<='9')
sum+=a[j]-'0';
}

if(a[i]=='-')
{

sum=a[i+2]-'0';
for(k=i+3;k<n;k++)
{if(a[k]>='0'&&a[k]<='9')
sum-=a[k]-'0';

}

}

if(a[i]=='*')
{sum=1;
for(j=i+1;j<n;j++)
if(a[j]>='0'&&a[j]<='9')
sum*=(a[j]-'0');
}
if(a[i]=='/')
{
sum=a[i+2]-'0';
for(k=i+3;k<n;k++)
{if(a[k]>='0'&&a[k]<='9')
sum/=(a[k]-'0');

}

}
//printf("%d ",sum);
return sum;
}



int main()
{

int i,j,a[100],flag[100],b[100],k=0,d[100],l=0,sum=0;
char s[1000];
gets(s);
memset(a,0,sizeof(a));
memset(flag,0,sizeof(flag));
memset(d,0,sizeof(d));
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='(')
a[i]=1;
if(s[i]==')')
a[i]=-1;
}
/*for(i=0;i<100;i++)
{
if(a[i])
{printf("%d ",i);
printf("%d\n",a[i]);
}}*/
for(i=0;i<100;i++)
{
if(a[i]<0)
{
for(j=i;j>=0;j--)
{
if(!flag[j]&&a[j]>0)
{
b[k++]=j;
b[k++]=i;
flag[j]=1;
break;
}
}
}
}
/*for(i=0;i<k;i++)
printf("%d ",b[i]);
printf("\n");*/
for(i=0;i<k-2;i=i+2)
{
	d[l++]=c(b[i],b[i+1],s);

}
//for(i=0;i<l;i++)
//printf("%d ",d[i]);
if(s[1]=='+')
for(i=0;i<l;i++)
sum+=d[i];
sum+=2;
printf("%d",sum);


}

Double click to view unformatted code.


Back to problem 94