# Thread: Calculator Help part 2

1. ## Calculator Help part 2

Write a program to model a simple calculator. Each data line should consist of the next operation to be performed from the list below and the right operand. Assume the left operand is the accumulator value (with an initial value of 0). You need a function scan_data() with two output parameters that returns the operator and the right operand scanned from the data line. You need a function do_next_op() that performs the required operation. do_next_op() has two input parameters (the operator and the operand) and one input/out put parameters ( the accumulator). The valid operators are:

- minus
* multiply
/ divide
^ power(raise left operand to power of right operand)
q quit

Your calculator should display the accumulator value after each operation.

Sample run:

Calculator program ( RESULT=0)

Input: + 5.0 (enter)
Result:5.0

Input: ^ 2
(enter)
Result:25.0

Input: / 2
(enter)
Result:12.5

Input: q
(enter)
Final Result:12.5

my code:
Code:

Code:
```#include<stdio.h>

float plus(float result, float number);
float minus(float result, float number);
float divide(float result, float number);
float multiply(float result, float number);
float power(float result, float number);
float quit(float result, float number);

main(){

float result=0;
float number;
char input;

printf("Calculator Program (RESULT=0)\n");

do{
printf("INPUT: ");
scanf("%c %f", &input, &number);

printf("%c %.2f", input, number);

if(input='+'){
result=plus(result,number);
}

else if(input='-'){
result=minus(result,number);
}
else if(input='*'){
result=multiply(result,number);
}
else if(input='/'){
result=divide(result,number);
}
else if(input='^'){
result=power(result,number);
}
else if(input='q'){
result=quit(result,number);
}
else{
printf("INVALID INPUT");
}

}while(1);

}

float plus(float result, float number){
result=result+number;
printf("RESULT:", result);
return result;
}

float minus(float result, float number){
result=result-number;
printf("RESULT:", result);
return result;
}

float multiply(float result, float number){
result=result*number;
printf("RESULT:", result);
return result;
}

float divide(float result, float number){
result=result/number;
printf("RESULT:", result);
return result;
}

float power(float result, float number){
result=result*result;
printf("RESULT:", result);
return result;
}

float quit(float result, float number){
printf("FINAL RESULT:", result);
exit (0);
}```

is my code correct?? it not working properly...

2. NEW CODE:
Code:
```#include<stdio.h>

float plus(float result, float number);
float minus(float result, float number);
float divide(float result, float number);
float multiply(float result, float number);
float power(float result, float number);
float quit(float result, float number);

main(){

float result=0;
float number;
char input;

printf("Calculator Program (RESULT=0)\n");

do{
printf("INPUT: ");
scanf("%c %f", &input, &number);

if(input='+'){
result=plus(result,number);
}

else if(input='-'){
result=minus(result,number);
}
else if(input='*'){
result=multiply(result,number);
}
else if(input='/'){
result=divide(result,number);
}
else if(input='^'){
result=power(result,number);
}
else if(input='q'){
result=quit(result,number);
}
else{
printf("INVALID INPUT");
}

}while(1);

}

float plus(float result, float number){
result=result+number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float minus(float result, float number){
result=result-number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float multiply(float result, float number){
result=result*number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float divide(float result, float number){
result=result/number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float power(float result, float number){
result=result*result;
printf("RESULT: %.2f\n\n", result);
return result;
}

float quit(float result, float number){
printf("FINAL RESULT: %.2f\n\n", result);
exit (0);
}```

power multiply and divide has bug..how to fix it??

3. > if(input='+')
There's a lot of = where there should be ==

PS
There is little need for font/size candy in your posts, especially when you apply it to ALL your text.
Careful use to emphasise specific points works well. A big wall of large text just puts people off.

4. THANKS SIR!!!
my new code:

Code:
```#include<stdio.h>

float plus(float result, float number);
float minus(float result, float number);
float divide(float result, float number);
float multiply(float result, float number);
float power(float result, float number);
float quit(float result, float number);

main(){

float result=0;
float number;
char input;

printf("Calculator Program (RESULT=0)\n");

do{
printf("INPUT: ");
fflush(stdin);
scanf("%c %f", &input, &number);

if(input=='+'){
result=plus(result,number);
}

else if(input=='-'){
result=minus(result,number);
}
else if(input=='*'){
result=multiply(result,number);
}
else if(input=='/'){
result=divide(result,number);
}
else if(input=='^'){
result=power(result,number);
}
else if(input=='q'){
result=quit(result,number);
}
else{
printf("INVALID\n");
}

}while(1);

}

float plus(float result, float number){
fflush(stdin);
result=result+number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float minus(float result, float number){
fflush(stdin);
result=result-number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float multiply(float result, float number){
fflush(stdin);
result=result*number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float divide(float result, float number){
fflush(stdin);
result=result/number;
printf("RESULT: %.2f\n\n", result);
return result;
}

float power(float result, float number){
fflush(stdin);
result=result*result;
printf("RESULT: %.2f\n\n", result);
return result;
}

float quit(float result, float number){
printf("FINAL RESULT: %.2f\n\n", result);
exit (0);
}```

5. Use int main()
Instead of exit 0; say return 0;
You don't check for any invalid number input
You should protect the divide function against division by 0

6. Also, don't use fflush(stdin).
SourceForge.net: Fflush - cpwiki