Code:
// J.F.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{ //First String//
int varA, varB, varC, varD, varE, varF;
char charA, charB, charC, charD, charE;
int exprA, exprB, exprC, exprD, exprE;
//Second String//
float varFA, varFB, varFC, varFD;
char charF, charG, charH;
float exprF, exprG, exprH;
//Third String//
float varFE, varFF;
char charI, charJ, charK;
int varG, varH;
float exprI, exprJ, exprK;
printf("Enter '(INT * INT) + (INT / INT) + (INT %% INT): ");
scanf("(%d %c %d) %c (%d %c %d) %c (%d %c %d)%*c", &varA, &charA, &varB,
&charB, &varC, &charC, &varD, &charD, &varE, &charE, &varF);
printf("(%d %c %d) %c (%d %c %d) %c (%d %c %d)= ",varA,charA,varB,charB,
varC,charC,varD,charD,varE,charE,varF);
switch(charA) { // First String, First Expression //
case '+':
exprA = varA + varB;
break;
case '-':
exprA = varA - varB;
break;
case '*':
exprA = varA * varB;
break;
case '/':
exprA = varA / varB;
break;
case '%':
exprA = varA % varB;
break;
default:
exprA = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
,charA, varA, charA, varB);
break;
}
switch(charC) { // First String, Second Expression //
case '+':
exprB = varC + varD;
break;
case '-':
exprB = varC - varD;
break;
case '*':
exprB = varC * varD;
break;
case '/':
exprB = varC / varD;
break;
case '%':
exprB = varC % varD;
break;
default:
exprB = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
,charC, varC, charC, varD);
break;
}
switch(charB) { // First String, Processing First Two Expressions //
case '+':
exprC = exprA + exprB;
break;
case '-':
exprC = exprA - exprB;
break;
case '*':
exprC = exprA * exprB;
break;
case '/':
exprC = exprA / exprB;
break;
case '%':
exprC = exprA % exprB;
break;
default:
exprC = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
,charB, exprA, charB, exprB);
break;
}
switch(charE) { // First String, Third Expression //
case '+':
exprD = varE + varF;
break;
case '-':
exprD = varE - varF;
break;
case '*':
exprD = varE * varF;
break;
case '/':
exprD = varE / varF;
break;
case '%':
exprD = varE % varF;
break;
default:
exprD = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
,charE, varE, charE, varF);
break;
}
switch(charD) { // First String, Final Expression Processing //
case '+':
exprE = exprC + exprD;
break;
case '-':
exprE = exprC - exprD;
break;
case '*':
exprE = exprC * exprD;
break;
case '/':
exprE = exprC / exprD;
break;
case '%':
exprE = exprC % exprD;
break;
default:
exprE = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
,charD, exprC, charD, exprB);
break;
}
printf("%d\n", exprE);
printf("Enter (FLOAT / FLOAT) * (FLOAT / FLOAT): ");
scanf("(%f %c %f) %c (%f %c %f)%*c",&varFA, &charF, &varFB, &charG,
&varFC, &charH, &varFD);
printf("(%f %c %f) %c (%f %c %f) = ",varFA, charF, varFB, charG,
varFC, charH, varFD);
switch(charF) { // Second String, First Expression //
case '+':
exprF = varFA + varFB;
break;
case '-':
exprF = varFA - varFB;
break;
case '*':
exprF = varFA * varFB;
break;
case '/':
exprF = varFA / varFB;
break;
case '%':
exprF = ((int)varFA % (int)varFB);
break;
default:
exprF = 0;
printf("?'%c' is not valid. \"(%f %c %f)\" set to 0\n"
, charF, varFA, charF, varFB);
break;
}
switch(charH) { // Second String, Second Expression //
case '+':
exprH = varFC + varFD;
break;
case '-':
exprH = varFC - varFD;
break;
case '*':
exprH = varFC * varFD;
break;
case '/':
exprH = varFC / varFD;
break;
case '%':
exprH = ((int)varFC % (int)varFD);
break;
default:
exprH = 0;
printf("?'%c' is not valid. \"(%f %c %f)\" set to 0\n"
,charH, varFC, charH, varFD);
break;
}
switch(charG) { // Second String, Final Expression Processing //
case '+':
exprG = exprF + exprH;
break;
case '-':
exprG = exprF - exprH;
break;
case '*':
exprG = exprF * exprH;
break;
case '/':
exprG = exprF / exprH;
break;
case '%':
exprG = ((int)exprF % (int)exprH);
break;
default:
exprG = 0;
printf("?'%c' is not valid. \"(%f %c %f)\" set to 0\n"
, charG, exprF, charG, exprH);
break;
}
printf("%.3f\n",exprG);
printf("Enter (INT - INT) %% (FLOAT * FLOAT): ");
scanf("(%d %c %d) %c (%f %c %f)%*c",&varG, &charI, &varH, &charJ,
&varFE, &charK, &varFF);
printf("(%d %c %d) %c (%f %c %f) = ",varG, charI, varH, charJ,
varFE, charK, varFF);
switch(charI) { // Third String, First Expression //
case '+':
exprI = varG + varH;
break;
case '-':
exprI = varG - varH;
break;
case '*':
exprI = varG * varH;
break;
case '/':
exprI = varG / varH;
break;
case '%':
exprI = varG % varH;
break;
default:
exprI = 0;
printf("?'%c' is not valid. \"(%d %c %d)\" set to 0\n"
, charI, varG, charI, varH);
break;
}
switch(charK) { // Third String, Second Expression //
case '+':
exprJ = ((int)varFE + (int)varFF);
break;
case '-':
exprJ = ((int)varFE - (int)varFF);
break;
case '*':
exprJ = ((int)varFE * (int)varFF);
break;
case '/':
exprJ = ((int)varFE / (int)varFF);
break;
case '%':
exprJ = ((int)varFE % (int)varFF);
break;
default:
exprJ = 0;
printf("?'%c' is not valid. \"(%f %c %f)\" set to 0\n"
,charK, varFC, charK, varFD);
break;
}
switch(charJ) { // Third String, Final Expression Processing //
case '+':
exprK = exprI + exprJ;
break;
case '-':
exprK = exprI - exprJ;
break;
case '*':
exprK = exprI * exprJ;
break;
case '/':
exprK = exprI / exprJ;
break;
case '%':
exprK = ((int)exprI % (int)exprJ);
break;
default:
exprK = 0;
printf("?'%c' is not valid. \"(%f %c %f)\" set to 0\n"
, charJ, exprI, charJ, exprJ);
break;
}
printf("%f\n",exprK);
scanf("%*c");
return 0;
}