Posted By


OdnetninI on 09/10/12

Tagged


Statistics


Viewed 684 times
Favorited by 0 user(s)

Calculator V 2.9


/ Published in: C
Save to your folder(s)

Two new fuctions and two bugs repaired


Copy this code and paste it in your HTML
  1. // Includes of the System
  2. #include <stdio.h>
  3. #include <inttypes.h>
  4. #include <math.h>
  5.  
  6. // Float variables of numbers
  7. float a = 0;
  8. float b = 0;
  9.  
  10. // Float variable of result
  11. float result = 0;
  12.  
  13. // Check Variable
  14. uint8_t lastresult = 0;
  15. uint8_t error = 0;
  16.  
  17. // Define PI
  18. #define PI 3.14159265
  19. #define RADIAN (PI/180)
  20. #define GRADOS (180/PI)
  21.  
  22. /*
  23.   Fuction AskNumbers
  24.   Ask for the numbers
  25. */
  26. void AskNumbers ()
  27. {
  28. if (lastresult == 0 )
  29. {
  30. printf("Elige el primer Número: ");
  31. scanf("%f", &a);
  32. printf("Elige el segundo Número: ");
  33. scanf("%f", &b);
  34. }
  35. else if (lastresult == 1)
  36. {
  37. a = result;
  38. printf("Elige el segundo Número (El Primero es el Resultado anterior): ");
  39. scanf("%f", &b);
  40. }
  41. else if (lastresult == 2)
  42. {
  43. b = result;
  44. printf("Elige el Primer Número (El Segundo es el Resultado anterior): ");
  45. scanf("%f", &a);
  46. }
  47. }
  48.  
  49. /*
  50.   Fuction PrintfOptions
  51.   Printf the Options
  52. */
  53. void PrintfOptions ()
  54. {
  55. printf("Basic Calculator by OdnetninI\n");
  56. printf("-----------------------------\n");
  57. printf(" 1. Suma\n");
  58. printf(" 2. Resta\n");
  59. printf(" 3. Multiplicación\n");
  60. printf(" 4. División\n");
  61. printf(" 5. Potencia\n");
  62. printf(" 6. Coseno\n");
  63. printf(" 7. Seno\n");
  64. printf(" 8. Tangente\n");
  65. printf(" 9. Logaritmo Base 10\n");
  66. printf("10. Raíz Cuadrada\n");
  67. printf("11. Grados a Radianes\n");
  68. printf("12. Radianes a Grados\n");
  69. printf("99. Salir\n");
  70. printf("-----------------------------\n");
  71. }
  72.  
  73. /*
  74.   Main
  75.   Init point of System
  76. */
  77. int main()
  78. {
  79. // Temporal vairables
  80. uint8_t salir = 0;
  81. uint8_t opcion = 0;
  82.  
  83. // Main While
  84. while(salir == 0)
  85. {
  86. // Printf the Options
  87. PrintfOptions();
  88.  
  89. // Ask for the option
  90. printf("Elija su Opción: ");
  91. scanf("%d", &opcion);
  92.  
  93. // Check if answer is correct
  94. if (opcion > 0 && opcion < 6)
  95. AskNumbers();
  96.  
  97. else if (opcion >= 6 && opcion < 13)
  98. {
  99. if (lastresult == 0 )
  100. {
  101. printf("Elige el Número: ");
  102. scanf("%f", &a);
  103. }
  104. else
  105. {
  106. a = result;
  107. }
  108. }
  109.  
  110. // Make the operation
  111. switch (opcion)
  112. {
  113. case 1:
  114. printf("%5.2f + %5.2f = %5.2f\n", a, b, a + b);
  115. result = a + b;
  116. break;
  117.  
  118. case 2:
  119. printf("%5.2f - %5.2f = %5.2f\n", a, b, a - b);
  120. result = a - b;
  121. break;
  122.  
  123. case 3:
  124. printf("%5.2f * %5.2f = %5.2f\n", a, b, a * b);
  125. result = a * b;
  126. break;
  127.  
  128. case 4:
  129. printf("%5.2f / %5.2f = %5.2f\n", a, b, a / b);
  130. result = a / b;
  131. break;
  132.  
  133. case 5:
  134. result = a;
  135. for (float i = 0; i < b-1; i++)
  136. result *= a;
  137. printf("%5.2f ^ %5.2f = %5.2f\n", a, b, result);
  138. break;
  139.  
  140. case 6:
  141. result = cos (a*PI/180);
  142. printf("cos(%5.2f) = %5.2f\n", a, result);
  143. break;
  144.  
  145. case 7:
  146. result = sin (a*PI/180);
  147. printf("sin(%5.2f) = %5.2f\n", a, result);
  148. break;
  149.  
  150. case 8:
  151. result = tan (a*PI/180);
  152. printf("tan(%5.2f) = %5.2f\n", a, result);
  153. break;
  154.  
  155. case 9:
  156. result = log10 (a);
  157. printf("log10(%5.2f) = %5.2f\n", a, result);
  158. break;
  159.  
  160. case 10:
  161. result = sqrt (a);
  162. printf("Raiz Cuadrada(%5.2f) = %5.2f\n", a, result);
  163. break;
  164.  
  165. case 11:
  166. result = a * RADIAN;
  167. printf("%5.2f = %5.2f radianes\n", a, result);
  168. break;
  169.  
  170. case 12:
  171. result = a * GRADOS;
  172. printf("%5.2f = %5.2f Grados\n", a, result);
  173. break;
  174.  
  175. case 99:
  176. salir = 1;
  177. error = 1;
  178. return 0;
  179. break;
  180.  
  181. default:
  182. printf("Operación Desconocida\n");
  183. error = 1;
  184. break;
  185. }
  186.  
  187. // Ask for go out
  188. printf("¿Desea salir? [0:No, 1:Si]");
  189. scanf("%d", &opcion);
  190.  
  191. // Check the answer
  192. if (opcion == 1)
  193. salir = 1;
  194.  
  195. else
  196. {
  197. salir = 0;
  198. if (error == 0)
  199. {
  200. printf("¿Quieres conservar el resultado? [0:No, 1:Resultado es A, 2: Resultado es B]");
  201. scanf("%d", &opcion);
  202. if (opcion == 1) lastresult = 1;
  203. else if (opcion == 2) lastresult = 2;
  204. else lastresult = 0;
  205. }
  206. error = 0;
  207. }
  208.  
  209. // New Line
  210. printf("\n");
  211. }
  212.  
  213. // Exit of the program
  214. return 0;
  215. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.