Sceintific Calculator program with Stacks in C language. Create Calculator in C
ID: 3866526 • Letter: S
Question
Sceintific Calculator program with Stacks in C language.
Create Calculator in C language that evaluate user input math expressions and produce answer using stacks and linked list. The program will continue to evaluate expression until ‘exit’ is entered.
Tasks: Ask user to enter expressions example: (9.342 + 2)^3 + 5!/6*sin(3.5*pi) – 3*cos( 2!) 34-4^(3+2) + ln( 32 * tan(3pi)) Check to see if expression is valid -balance bracket? -illegal entry - expression may have empty space between operators but your program will remove it.
Display postfix expression. Use postfix expression to calculate value and display result. Must use expression tree (implement using linked list) & stacks (or queues).
Support operation tokens: 1: + - * / % ^ pi () 2: ! log( ) ln( ) sin() cos() tan( ) 3: { } 4: constant pi=3.14159 5: %=modulus 6: ^ =exponents 7: ! = factorial 8: log(x)=log10 ( x )
Do not have the core logic in your main(). The main() should only have function calls and basic programme control and user input. Keep your code modular.
Explanation / Answer
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main(void) {
int choice, i, a, b;
float x, y, result;
clrscr();
do {
printf(“ Select your operation (0 to exit): ”);
printf(“1. Addition 2. Subtraction 3. Multiplication 4. Division ”);
printf(“5. Square root 6. X ^ Y 7. X ^ 2 8. X ^ 3 ”);
printf(“9. 1 / X 10. X ^ (1 / Y) 11. X ^ (1 / 3) ”);
printf(“12. 10 ^ X 13. X! 14. % 15. log10(x) 16. Modulus ”);
printf(“17. Sin(X) 18. Cos(X) 19. Tan(X) 20. Cosec(X) ”);
printf(“21. Cot(X) 22. Sec(X) ”);
printf(“Choice: “);
scanf(“%d”, &choice);
if(choice == 0) exit(0);
switch(choice) {
case 1:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = x + y;
printf(“ Result: %f”, result);
break;
case 2:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = x – y;
printf(“ Result: %f”, result);
break;
case 3:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = x * y;
printf(“ Result: %f”, result);
break;
case 4:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = x / y;
printf(“ Result: %f”, result);
break;
case 5:
printf(“Enter X: “);
scanf(“%f”, &x);
result = sqrt(x);
printf(“ Result: %f”, result);
break;
case 6:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = pow(x, y);
printf(“ Result: %f”, result);
break;
case 7:
printf(“Enter X: “);
scanf(“%f”, &x);
result = pow(x, 2);
printf(“ Result: %f”, result);
break;
case 8:
printf(“Enter X: “);
scanf(“%f”, &x);
result = pow(x, 3);
printf(“ Result: %f”, result);
break;
case 9:
printf(“Enter X: “);
scanf(“%f”, &x);
result = pow(x, -1);
printf(“ Result: %f”, result);
break;
case 10:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = pow(x, (1/y));
printf(“ Result: %f”, result);
break;
case 11:
printf(“Enter X: “);
scanf(“%f”, &x);
y = 3;
result = pow(x, (1/y));
printf(“ Result: %f”, result);
break;
case 12:
printf(“Enter X: “);
scanf(“%f”, &x);
result = pow(10, x);
printf(“ Result: %f”, result);
break;
case 13:
printf(“Enter X: “);
scanf(“%f”, &x);
result = 1;
for(i = 1; i <= x; i++) {
result = result * i;
}
printf(“ Result: %.f”, result);
break;
case 14:
printf(“Enter X: “);
scanf(“%f”, &x);
printf(“ Enter Y: “);
scanf(“%f”, &y);
result = (x * y) / 100;
printf(“ Result: %.2f”, result);
break;
case 15:
printf(“Enter X: “);
scanf(“%f”, &x);
result = log10(x);
printf(“ Result: %.2f”, result);
break;
case 16:
printf(“Enter X: “);
scanf(“%d”, &a);
printf(“ Enter Y: “);
scanf(“%d”, &b);
result = a % b;
printf(“ Result: %d”, result);
break;
case 17:
printf(“Enter X: “);
scanf(“%f”, &x);
result = sin(x * 3.14159 / 180);
printf(“ Result: %.2f”, result);
break;
case 18:
printf(“Enter X: “);
scanf(“%f”, &x);
result = cos(x * 3.14159 / 180);
printf(“ Result: %.2f”, result);
break;
case 19:
printf(“Enter X: “);
scanf(“%f”, &x);
result = tan(x * 3.14159 / 180);
printf(“ Result: %.2f”, result);
break;
case 20:
printf(“Enter X: “);
scanf(“%f”, &x);
result = 1 / (sin(x * 3.14159 / 180));
printf(“ Result: %.2f”, result);
break;
case 21:
printf(“Enter X: “);
scanf(“%f”, &x);
result = 1 / tan(x * 3.14159 / 180);
printf(“ Result: %.2f”, result);
break;
case 22:
printf(“Enter X: “);
scanf(“%f”, &x);
result = 1 / cos(x * 3.14159 / 180);
printf(“ Result: %.2f”, result);
break;
default:
printf(“ Invalid Choice!”);
}
} while(choice);
getch();
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.