View Code of Problem 94

#include "stdio.h"
#include "math.h"
#include "string.h"

void main()
{
	void f(char s[],int sum,int i);
	char s[100];
	int sum=0;
	gets(s);
	f(s,sum,0);	
	printf("%d",sum);
}


void f(char s[],int sum,int i)								//( + ( * 7 3 ) ( - 5 1 ) )
{	
	
	if(s[i]==' ')
		i++;
	if(s[i]=='(')
		f(s,sum,i+1);

	if(s[i]=='+')												//( + ( * 7 3 ) ( - 5 1 ) )
	{
		for(;s[i]!=')';i++)
		{
			if(s[i]=='(')
				f(s,s[i+1],sum);
			if(s[i]<='9'&&s[i]>='0')
			{
				sum=s[i]-'0';
				for(;s[i]!=')';i++)
				{
					if(s[i]<='9'&&s[i]>='0')
					{
						sum=sum+(s[i]-'0');
					}
				}
			}
			if(s[i]==')')
				f(s,s[i+1],sum,i+1);
		}
	}
	if(s[i]=='-')												//( + ( * 7 3 ) ( - 5 1 ) )
	{
		for(;s[i]!=')';i++)
		{
			if(s[i]=='(')
				f(s,s[i+1],sum);
			if(s[i]<='9'&&s[i]>='0')
			{
				sum=s[i]-'0';
				for(;s[i]!=')';i++)
				{
					if(s[i]<='9'&&s[i]>='0')
					{
						sum=sum-(s[i]-'0');
					}
				}
			}
			if(s[i]==')')
				f(s,s[i+1],sum,i+1);
		}
	}
	if(s[i]=='*')												//( + ( * 7 3 ) ( - 5 1 ) )
	{
		for(;s[i]!=')';i++)
		{
			if(s[i]=='(')
				f(s,s[i+1],sum);
			if(s[i]<='9'&&s[i]>='0')
			{
				sum=s[i]-'0';
				for(;s[i]!=')';i++)
				{
					if(s[i]<='9'&&s[i]>='0')
					{
						sum=sum*(s[i]-'0');
					}
				}
			}
			if(s[i]==')')
				f(s,s[i+1],sum,i+1);
		}
	}
	if(s[i]=='/')												//( + ( * 7 3 ) ( - 5 1 ) )
	{
		for(;s[i]!=')';i++)
		{
			if(s[i]=='(')
				f(s,s[i+1],sum);
			if(s[i]<='9'&&s[i]>='0')
			{
				sum=s[i]-'0';
				for(;s[i]!=')';i++)
				{
					if(s[i]<='9'&&s[i]>='0')
					{
						sum=sum/(s[i]-'0');
					}
				}
			}
			if(s[i]==')')
				f(s,s[i+1],sum,i+1);
		}
	}
}

/*
Main.c:5:6: warning: return type of 'main' is not 'int' [-Wmain]
 void main()
      ^
Main.c: In function 'main':
Main.c:10:2: warning: 'gets' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(s);
  ^
Main.c: In function 'f':
Main.c:42:5: error: too many arguments to function 'f'
     f(s,s[i+1],sum,i+1);
     ^
Main.c:16:6: note: declared here
 void f(char s[],int sum,int i)        //( + ( * 7 3 ) ( - 5 1 ) )
      ^
Main.c:63:5: error: too many arguments to function 'f'
     f(s,s[i+1],sum,i+1);
     ^
Main.c:16:6: note: declared here
 void f(char s[],int sum,int i)        //( + ( * 7 3 ) ( - 5 1 ) )
      ^
Main.c:84:5: error: too many arguments to function 'f'
     f(s,s[i+1],sum,i+1);
     ^
Main.c:16:6: note: declared here
 void f(char s[],int sum,int i)        //( + ( * 7 3 ) ( - 5 1 ) )
      ^
Main.c:105:5: error: too many arguments to function 'f'
     f(s,s[i+1],sum,i+1);
     ^
Main.c:16:6: note: declared here
 void f(char s[],int sum,int i)        //( + ( * 7 3 ) ( - 5 1 ) )
      ^
*/

Double click to view unformatted code.


Back to problem 94