Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int readPositiveInt();
  6. float readPositiveFloat();
  7. void readTriangleData(float *base, float *height);
  8. float triangleArea(float base, float height);
  9. float rectangleArea(float width, float height);
  10. float squareArea(float side);
  11. float circleArea(float radius);
  12. char menu(int numTri, int numRect, int numSquares, int numCircles);
  13.  
  14. int main(void)
  15. {
  16. char option;
  17. int numTri = 0, numRect = 0, numSquares = 0, numCircles = 0;
  18. float area, base, height, width, side, radius;
  19.  
  20. do
  21. {
  22. option = menu(numTri, numRect, numSquares, numCircles);
  23.  
  24. switch(option)
  25. {
  26. case 't':
  27. printf("Base: ");
  28. base = readPositiveFloat();
  29. printf("Height: ");
  30. height = readPositiveFloat();
  31. //readTriangleData(&base, &height);
  32. area = triangleArea(base, height);
  33. printf("\nTriangle area: %.2f.\n", area);
  34. printf("Press a key...\n");
  35. getchar();
  36. numTri++;
  37. break;
  38. case 'r':
  39. printf("Width: ");
  40. width = readPositiveFloat();
  41. printf("Height: ");
  42. height = readPositiveFloat();
  43. area = rectangleArea(width, height);
  44. printf("\nRectangle area: %.2f.\n", area);
  45. printf("Press a key...\n");
  46. getchar();
  47. numRect++;
  48. break;
  49. case 's':
  50. printf("Side: ");
  51. side = readPositiveFloat();
  52. area = squareArea(side);
  53. printf("\nSquare area: %.2f.\n", area);
  54. printf("Press a key...\n");
  55. getchar();
  56. numSquares++;
  57. break;
  58. case 'c':
  59. printf("Radius: ");
  60. radius = readPositiveFloat();
  61. area = circleArea(radius);
  62. printf("\nCircle area: %.2f.\n", area);
  63. printf("Press a key...\n");
  64. getchar();
  65. numCircles++;
  66. break;
  67. case 'e':
  68. printf("\nBon voyage!\n");
  69. }
  70. }
  71. while(option != 'e');
  72.  
  73. return 0;
  74. }
  75.  
  76. int readPositiveInt()
  77. {
  78. int n, r;
  79.  
  80. do
  81. {
  82. r = scanf("%d", &n);
  83. while(getchar() != '\n');
  84. }
  85. while(r != 1 || n <= 0);
  86.  
  87. return n;
  88. }
  89.  
  90. float readPositiveFloat()
  91. {
  92. float n;
  93. int r;
  94.  
  95. do
  96. {
  97. r = scanf("%f", &n);
  98. while(getchar() != '\n');
  99. }
  100. while(r != 1 || n <= 0);
  101.  
  102. return n;
  103. }
  104.  
  105. void readTriangleData(float *base, float *height)
  106. {
  107. printf("Base: ");
  108. (*base) = readPositiveFloat();
  109. printf("Height: ");
  110. (*height) = readPositiveFloat();
  111. }
  112.  
  113. float triangleArea(float base, float height)
  114. {
  115. return base * height / 2;
  116. }
  117.  
  118. float rectangleArea(float width, float height)
  119. {
  120. return width * height;
  121. }
  122.  
  123. float squareArea(float side)
  124. {
  125. return side * side;
  126. }
  127.  
  128. float circleArea(float radius)
  129. {
  130. return M_PI * radius * radius;
  131. }
  132.  
  133. char menu(int numTri, int numRect, int numSquares, int numCircles)
  134. {
  135. char option;
  136.  
  137. do
  138. {
  139. char a = 248;
  140. printf("\t\t\tAreas computation\n\n");
  141. printf("Triangle (N%c): %d\t\t\t\tRetangulo (N%c): %d\n", a, numTri, a, numRect);
  142. printf("Circle (N%c): %d\t\t\t\t\tSquare (N%c): %d\n", a, numCircles, a, numSquares);
  143. printf("\n\tOPTIONS\n");
  144. printf("\t(T)riangle\n");
  145. printf("\t(R)ectangle\n");
  146. printf("\t(S)quare\n");
  147. printf("\t(C)ircle\n");
  148. printf("\t(E)xit\n");
  149. printf("OPTION -> ");
  150. scanf(" %c", &option);
  151. while(getchar() != '\n');
  152. option = tolower(option);
  153.  
  154. if(option != 't' && option != 'r' && option != 's' && option != 'c' && option != 'e')
  155. {
  156. printf("\n\nInvalid option!\n\n");
  157. printf("Press a key...\n");
  158. getchar();
  159. }
  160. }
  161. while(option != 't' && option != 'r' && option != 's' && option != 'c' && option != 'e');
  162.  
  163. return option;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement