כשחשבתי על זה לעומק דווקא תרגיל לא כל כך מסובך
הנה הקוד אם מישהו מתעניין
int main ( )
{[font='Arial','sans-serif'][/font]
float num1,num2,num3,run=0;
char op1,op2,symbol,status;
int scanres;
clrscr ();
scanres=scanf ("%f",&num1);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op1);
[font='Arial','sans-serif'][/font]
flushall();
scanres=scanf ("%f",&num2);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op2);
[font='Arial','sans-serif'][/font]
flushall();
do
{[font='Arial','sans-serif'][/font]
if (op2=='=')
{[font='Arial','sans-serif'][/font]
symbol=op1;
run=1;
status='3';
}[font='Arial','sans-serif'][/font]
if ((op1=='*'|| op1=='/') && (op2=='*' || op2=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op1=='+' || op1=='-') && (op2=='*' || op2=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op2;
status='2';
scanres=scanf ("%f",&num3);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op2=='+' || op2=='-') && (op1=='*' || op1=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op1=='+' || op1=='-') && (op2=='+' || op2=='-'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
switch(symbol)
{[font='Arial','sans-serif'][/font]
case '+':{
num1=num1+num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '-':{
num1=num1-num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '*':{
if(status=='2')
num2=num2*num3;
else
num1=num1*num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '/':{
if(status=='2')
{[font='Arial','sans-serif'][/font]
if (num3==0)
{[font='Arial','sans-serif'][/font]
printf ("Divide by zero");
return 0;
}[font='Arial','sans-serif'][/font]
num2=num2/num3;
}[font='Arial','sans-serif'][/font]
else
{[font='Arial','sans-serif'][/font]
if (num2==0)
{[font='Arial','sans-serif'][/font]
printf ("Divide by zero");
return 0;
}[font='Arial','sans-serif'][/font]
num1=num1/num2;
}[font='Arial','sans-serif'][/font]
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
default: {
printf("ERROR");
run=1;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if (status=='1')
{[font='Arial','sans-serif'][/font]
op1=op2;
scanres=scanf ("%f",&num2);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op2);
flushall();
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if (status=='2')
{[font='Arial','sans-serif'][/font]
scanf("%c",&op2);
flushall();
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
printf("result=%f\n",num1);
[font='Arial','sans-serif'][/font]
}while (run==0);//END OF WHILE
[font='Arial','sans-serif'][/font]
printf("result=%f",num1);
[font='Arial','sans-serif'][/font]
getch ( );
return 0;
int main ( )
{[font='Arial','sans-serif'][/font]
float num1,num2,num3,run=0;
char op1,op2,symbol,status;
int scanres;
clrscr ();
scanres=scanf ("%f",&num1);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op1);
[font='Arial','sans-serif'][/font]
flushall();
scanres=scanf ("%f",&num2);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op2);
[font='Arial','sans-serif'][/font]
flushall();
do
{[font='Arial','sans-serif'][/font]
if (op2=='=')
{[font='Arial','sans-serif'][/font]
symbol=op1;
run=1;
status='3';
}[font='Arial','sans-serif'][/font]
if ((op1=='*'|| op1=='/') && (op2=='*' || op2=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op1=='+' || op1=='-') && (op2=='*' || op2=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op2;
status='2';
scanres=scanf ("%f",&num3);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op2=='+' || op2=='-') && (op1=='*' || op1=='/'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if ((op1=='+' || op1=='-') && (op2=='+' || op2=='-'))
{[font='Arial','sans-serif'][/font]
symbol=op1;
status='1';
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
switch(symbol)
{[font='Arial','sans-serif'][/font]
case '+':{
num1=num1+num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '-':{
num1=num1-num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '*':{
if(status=='2')
num2=num2*num3;
else
num1=num1*num2;
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
case '/':{
if(status=='2')
{[font='Arial','sans-serif'][/font]
if (num3==0)
{[font='Arial','sans-serif'][/font]
printf ("Divide by zero");
return 0;
}[font='Arial','sans-serif'][/font]
num2=num2/num3;
}[font='Arial','sans-serif'][/font]
else
{[font='Arial','sans-serif'][/font]
if (num2==0)
{[font='Arial','sans-serif'][/font]
printf ("Divide by zero");
return 0;
}[font='Arial','sans-serif'][/font]
num1=num1/num2;
}[font='Arial','sans-serif'][/font]
break;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
default: {
printf("ERROR");
run=1;
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if (status=='1')
{[font='Arial','sans-serif'][/font]
op1=op2;
scanres=scanf ("%f",&num2);
if (scanres!=1)
{[font='Arial','sans-serif'][/font]
printf ("Error in Input");
return 0;
}[font='Arial','sans-serif'][/font]
flushall();
scanf("%c",&op2);
flushall();
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
[font='Arial','sans-serif'][/font]
if (status=='2')
{[font='Arial','sans-serif'][/font]
scanf("%c",&op2);
flushall();
[font='Arial','sans-serif'][/font]
}[font='Arial','sans-serif'][/font]
printf("result=%f\n",num1);
[font='Arial','sans-serif'][/font]
}while (run==0);//END OF WHILE
[font='Arial','sans-serif'][/font]
printf("result=%f",num1);
[font='Arial','sans-serif'][/font]
getch ( );
return 0;