Advertisement
Guest User

Calculator

a guest
Jul 22nd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 KB | None | 0 0
  1. // New Smart Calculator
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. // sam_ds is for 2 values
  5. // sam_dm is for multiple values
  6. // Still has many bug
  7. float sam_ds(float n_rcvr[50], char s_rcvr[50], int range);
  8. float sam_dm(float num_f[50], char sign_f[50], int range2);
  9.  
  10. int i = 0, j = 0, k;
  11. float m_answer = 0, t_answer = 0;
  12.  
  13. int main()
  14. {
  15.     float result;
  16.     float num[50];
  17.     char sign[50];
  18.     for (i = 0; i < 50; i++)
  19.     {
  20.         scanf("%f %c", &num[i], &sign[i]);
  21.         if (sign[i] == '=')
  22.             break;
  23.     }
  24.     if (i == 0)
  25.         printf("ERROR");
  26.     else
  27.     {
  28.         if (i == 1)
  29.         {
  30.             result = sam_ds(num, sign, i);
  31.             printf("%0.2f", result);
  32.         }
  33.         else
  34.         {
  35.             result = sam_dm(num, sign, i);
  36.             printf("%0.2f", result);
  37.         }
  38.     }
  39.     return 0;
  40. }
  41.  
  42. float sam_ds(float n_rcvr[50], char s_rcvr[50], int range)
  43. {
  44.     for (i = 0; i <= range; i++)
  45.     {
  46.         if (s_rcvr[i] == '/')
  47.             m_answer = n_rcvr[i] / n_rcvr[i + 1];
  48.  
  49.         else if (s_rcvr[i] == '*')
  50.             m_answer = n_rcvr[i] * n_rcvr[i + 1];
  51.  
  52.         else if (s_rcvr[i] == '+')
  53.             m_answer = n_rcvr[i] + n_rcvr[i + 1];
  54.  
  55.         else if (s_rcvr[i] == '-')
  56.             m_answer = n_rcvr[i] - n_rcvr[i + 1];
  57.     }
  58.     return m_answer;
  59. }
  60. //buggy function
  61. float sam_dm(float num_f[50], char sign_f[50], int range2)
  62. {
  63.     for (i = 0; i < range2; i++)
  64.     {
  65.         if (sign_f[i] == '/')
  66.         {
  67.             num_f[i] = num_f[i] / num_f[i + 1];
  68.             for (j = i + 1; j < range2; j++)
  69.             {
  70.                 num_f[j] = num_f[j + 1];
  71.                 sign_f[j - 1] = sign_f[j];
  72.             }
  73.         }
  74.     }
  75. for(i = 0; i <= range2; i++)
  76. {
  77.     if(sign_f[i] == '*')
  78.     {
  79.         num_f[i] = num_f[i] * num_f[i + 1];
  80.         for (j = i + 1; j < range2; j++)
  81.         {
  82.             num_f[j] = num_f[j + 1];
  83.             sign_f[j - 1] = sign_f[j];
  84.         }
  85.     }
  86. }
  87.  
  88. for (i = 0; i <= range2; i++)
  89. {
  90.     if (sign_f[i] == '+')
  91.     {
  92.         num_f[i] = num_f[i] + num_f[i + 1];
  93.         for (j = i + 1; j < range2; j++)
  94.         {
  95.             num_f[j] = num_f[j + 1];
  96.             sign_f[j - 1] = sign_f[j];
  97.         }
  98.     }
  99. }
  100.  
  101. for (i = 0; i <= range2; i++)
  102. {
  103.     if (sign_f[i] == '-')
  104.     {
  105.         num_f[i] = num_f[i] - num_f[i + 1];
  106.     }
  107. }
  108.  
  109. return num_f[0];
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement