Guest User

Untitled

a guest
Apr 19th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int scan_data(char* ,double*);
  4. int do_next_op(char ,double ,double*);
  5. int main()
  6. {
  7. char compute;
  8. double operand,accumulator;
  9. int re,ret;
  10. accumulator = 0;
  11. while(compute!='q')
  12. {
  13. ret=scan_data(&compute,&operand);
  14. re=do_next_op(compute,operand,&accumulator);
  15. printf("ret = %d , re = %d\n\n",ret,re);
  16. if(compute=='q' && ret!=0)
  17. {
  18. printf("final result is %.1f\n",accumulator);
  19. break;
  20. }
  21. else if(compute!='q' && re!=0 && ret!=0)
  22. {
  23. printf("result so far is %.1f\n",accumulator);
  24. }
  25. if(re==0 || ret==0)
  26. {
  27. printf("the operator or operand is fault, please enter again\n");
  28. continue;
  29. }
  30. }
  31. return 0;
  32. }
  33.  
  34. int scan_data(char *m, double *n)
  35. {
  36. int r;
  37. scanf(" %c",m);
  38. r=scanf("%lf",n);
  39. printf("r = %d\n",r);
  40. while(getchar()!='\n');
  41. return r;
  42. }
  43.  
  44. int do_next_op(char a, double b, double *c)
  45. {
  46. switch(a)
  47. {
  48. int i;
  49. double j;
  50. case '+':
  51. *c = *c +b;
  52. break;
  53. case '-':
  54. *c = *c -b;
  55. break;
  56. case '*':
  57. *c = *c *b;
  58. break;
  59. case '/':
  60. *c = *c /b;
  61. break;
  62. case '^':
  63. j=1;
  64. for(i=1;i<=b;i++)
  65. {
  66. j = *c *j;
  67. }
  68. *c = j;
  69. break;
  70. case 'q':
  71. break;
  72. default:
  73. return 0;
  74. break;
  75. }
  76. }
Add Comment
Please, Sign In to add comment