Here is a simple solution without error checking or precedence taken into consideration.
Code:
#include <stdio.h>
#include <stdlib.h>
double calculate(double a, double b, char oper);
int main() {
char terms[50];
char ch, oper;
int a, b, c, d, i;
double result;
printf("enter the expression: ");
gets(terms);
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
printf("c = ");
scanf("%d", &c);
printf("d = ");
scanf("%d", &d);
i = 0;
while(terms[i] != '\0') {
ch = terms[i];
switch(ch) {
case 'a':
if(i == 0)
result = a;
else
result = calculate(result, a, oper);
break;
case 'b':
if(i == 0)
result = b;
else
result = calculate(result, b, oper);
break;
case 'c':
if(i == 0)
result = c;
else
result = calculate(result, c, oper);
break;
case 'd':
if(i == 0)
result = d;
else
result = calculate(result, c, oper);
default:
if(ch == '+' || ch == '-' || ch == '*' || ch == '/')
oper = ch;
else
printf("invalid term: %c\n", ch);
}
++i;
}
printf("\nThe result of the epression is: %.2f\n\n",result);
system("pause");
return 0;
}
double calculate(double a, double b, char oper) {
switch(oper) {
case '+':
return a+b;
case '-':
return a-b;
case '/':
return a/b;
case '*':
return a*b;
default:
return 0;
}
}