Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.79 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace Calculator
  5. {
  6. class Control
  7. {
  8. /**
  9. * If input is not int, then throws error. Else returns it.
  10. *
  11. * @return int output
  12. */
  13. public int Int()
  14. {
  15. int output;
  16. while (!int.TryParse(Console.ReadLine(), out output))
  17. {
  18. Render.Error();
  19. }
  20. return output;
  21. }
  22.  
  23. /**
  24. * If input is not float, then throws error. Else returns it.
  25. *
  26. * @return float output
  27. */
  28. public float Float()
  29. {
  30. float output;
  31. while (!float.TryParse(Console.ReadLine(), out output))
  32. {
  33. Render.Error();
  34. }
  35. return output;
  36. }
  37. }
  38.  
  39. class Render
  40. {
  41. /**
  42. * Writes menu.
  43. */
  44. public static void Menu()
  45. {
  46. Console.WriteLine("1 - Sčítat");
  47. Console.WriteLine("2 - Odčítat");
  48. Console.WriteLine("3 - Násobit");
  49. Console.WriteLine("4 - Dělit");
  50. Console.WriteLine("5 - Umocnit");
  51. Console.WriteLine("6 - Odmocnit");
  52. Console.WriteLine("7 - Historie výsledků");
  53. Console.WriteLine("Jiné číslo - Konec");
  54. }
  55.  
  56. /**
  57. * Writes result and gives it to array.
  58. *
  59. * @param float result, float[] results
  60. */
  61. public static void Result(float result, float[] results)
  62. {
  63. Console.WriteLine("Výsledek se rovná {0}.", result);
  64.  
  65. int i = 0;
  66.  
  67. // Pokud je index v poli prázdný, vložím do něj hodnotu a dám break.
  68. // Pokud není prázdný, jedu dál.
  69. // Pokud jsem na posledním indexu a poslední index není prázdný.
  70. // Tak první slot pole se dá na 0
  71. // A všechno v poli posunu doleva k 0, aby byl poslední slot prázdný.
  72.  
  73. while (i <= results.Length)
  74. {
  75. // Pokud je index v poli prázdný
  76. if (results[i] == 0)
  77. {
  78. // Vložím do něj hodnotu a vypnu to
  79. results[i] = result;
  80. break;
  81. }
  82. // Pokud není prázdný, tak to jede dál
  83. else
  84. {
  85. // Pokud jsem na posledním místě a index není prázdný
  86. if (i == results.Length && results[i] != 0)
  87. {
  88. results = results.RemoveAt(0).ToArray();
  89. }
  90. }
  91. }
  92.  
  93. }
  94.  
  95. /**
  96. * Writes error.
  97. */
  98. public static void Error()
  99. {
  100. Console.WriteLine("Zadejte správnou hodnotu!");
  101. }
  102.  
  103. /**
  104. * Writes history of results.
  105. *
  106. * @param float[] results
  107. */
  108. public static void Results(float[] results)
  109. {
  110. Console.WriteLine("\n");
  111. Console.WriteLine("------------------------------");
  112. for (int i = 0; i < results.Length; i++)
  113. {
  114. Console.Write("{0}; ", results[i]);
  115. }
  116. Console.WriteLine("\n------------------------------");
  117. Console.WriteLine("\n");
  118. }
  119.  
  120. /**
  121. * Writes last message.
  122. */
  123. public static void End()
  124. {
  125. Console.WriteLine("Ukončil jste program.");
  126. }
  127.  
  128. /**
  129. * Renders input for number.
  130. *
  131. * @return float firstNumber
  132. */
  133. public static float Number()
  134. {
  135. Control control = new Control();
  136. Console.WriteLine("Zadejte číslo:\n");
  137. float number = control.Float();
  138. return number;
  139. }
  140. }
  141.  
  142. class Math
  143. {
  144. /**
  145. * Adds inputs.
  146. *
  147. * @param float firstNumber, float secondNumber, float[] results
  148. */
  149. public static void AddUp(float firstNumber, float secondNumber, float[] results)
  150. {
  151. float output = firstNumber + secondNumber;
  152. Render.Result(output, results);
  153. }
  154.  
  155. /**
  156. * Subtracts inputs.
  157. *
  158. * @param float firstNumber, float secondNumber, float[] results
  159. */
  160. public static void Subtract(float firstNumber, float secondNumber, float[] results)
  161. {
  162. float output = firstNumber - secondNumber;
  163. Render.Result(output, results);
  164. }
  165.  
  166. /**
  167. * Multiplies inputs.
  168. *
  169. * @param float firstNumber, float secondNumber, float[] results
  170. */
  171. public static void Multiply(float firstNumber, float secondNumber, float[] results)
  172. {
  173. float output = firstNumber * secondNumber;
  174. Render.Result(output, results);
  175. }
  176.  
  177. /**
  178. * Divides inputs.
  179. *
  180. * @param float firstNumber, float secondNumber, float[] results
  181. */
  182. public static void Divide(float firstNumber, float secondNumber, float[] results)
  183. {
  184. if (secondNumber == 0)
  185. {
  186. Render.Error();
  187. }
  188. else
  189. {
  190. float output = firstNumber / secondNumber;
  191. Render.Result(output, results);
  192. }
  193. }
  194.  
  195. /**
  196. * Roots inputs.
  197. *
  198. * @param float firstNumber, float[] results
  199. */
  200. public static void Sqrt(float firstNumber, float[] results)
  201. {
  202. float output = (float)System.Math.Sqrt(firstNumber);
  203. Render.Result(output, results);
  204. }
  205.  
  206. /**
  207. * Raises input.
  208. *
  209. * @param float firstNumber, float[] results
  210. */
  211. public static void Power(float firstNumber, float[] results)
  212. {
  213. float output = (float)System.Math.Pow(firstNumber, 2);
  214. Render.Result(output, results);
  215. }
  216. }
  217.  
  218. class Program
  219. {
  220. /**
  221. * Runs program and triggers actions.
  222. *
  223. * @param string[] args
  224. */
  225. public static void Main(string[] args)
  226. {
  227. Control control = new Control();
  228. float[] results = new float[2];
  229. bool again = true;
  230.  
  231. while (again is true)
  232. {
  233. Render.Menu();
  234.  
  235. Console.WriteLine("Co chcete udělat?:\n");
  236. int action = control.Int();
  237.  
  238. switch (action)
  239. {
  240. case 1:
  241. Math.AddUp(Render.Number(), Render.Number(), results);
  242. break;
  243. case 2:
  244. Math.Subtract(Render.Number(), Render.Number(), results);
  245. break;
  246. case 3:
  247. Math.Multiply(Render.Number(), Render.Number(), results);
  248. break;
  249. case 4:
  250. Math.Divide(Render.Number(), Render.Number(), results);
  251. break;
  252. case 5:
  253. Math.Power(Render.Number(), results);
  254. break;
  255. case 6:
  256. Math.Sqrt(Render.Number(), results);
  257. break;
  258. case 7:
  259. Render.Results(results);
  260. break;
  261. default:
  262. Render.End();
  263. again = false;
  264. break;
  265. }
  266. }
  267. }
  268. }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement