Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace Calculator
- {
- class Control
- {
- /**
- * If input is not int, then throws error. Else returns it.
- *
- * @return int output
- */
- public int Int()
- {
- int output;
- while (!int.TryParse(Console.ReadLine(), out output))
- {
- Render.Error();
- }
- return output;
- }
- /**
- * If input is not float, then throws error. Else returns it.
- *
- * @return float output
- */
- public float Float()
- {
- float output;
- while (!float.TryParse(Console.ReadLine(), out output))
- {
- Render.Error();
- }
- return output;
- }
- }
- class Render
- {
- /**
- * Writes menu.
- */
- public static void Menu()
- {
- Console.WriteLine("1 - Sčítat");
- Console.WriteLine("2 - Odčítat");
- Console.WriteLine("3 - Násobit");
- Console.WriteLine("4 - Dělit");
- Console.WriteLine("5 - Umocnit");
- Console.WriteLine("6 - Odmocnit");
- Console.WriteLine("7 - Historie výsledků");
- Console.WriteLine("Jiné číslo - Konec");
- }
- /**
- * Writes result and gives it to array.
- *
- * @param float result, float[] results
- */
- public static void Result(float result, float[] results)
- {
- Console.WriteLine("Výsledek se rovná {0}.", result);
- int i = 0;
- // Pokud je index v poli prázdný, vložím do něj hodnotu a dám break.
- // Pokud není prázdný, jedu dál.
- // Pokud jsem na posledním indexu a poslední index není prázdný.
- // Tak první slot pole se dá na 0
- // A všechno v poli posunu doleva k 0, aby byl poslední slot prázdný.
- while (i <= results.Length)
- {
- // Pokud je index v poli prázdný
- if (results[i] == 0)
- {
- // Vložím do něj hodnotu a vypnu to
- results[i] = result;
- break;
- }
- // Pokud není prázdný, tak to jede dál
- else
- {
- // Pokud jsem na posledním místě a index není prázdný
- if (i == results.Length && results[i] != 0)
- {
- results = results.RemoveAt(0).ToArray();
- }
- }
- }
- }
- /**
- * Writes error.
- */
- public static void Error()
- {
- Console.WriteLine("Zadejte správnou hodnotu!");
- }
- /**
- * Writes history of results.
- *
- * @param float[] results
- */
- public static void Results(float[] results)
- {
- Console.WriteLine("\n");
- Console.WriteLine("------------------------------");
- for (int i = 0; i < results.Length; i++)
- {
- Console.Write("{0}; ", results[i]);
- }
- Console.WriteLine("\n------------------------------");
- Console.WriteLine("\n");
- }
- /**
- * Writes last message.
- */
- public static void End()
- {
- Console.WriteLine("Ukončil jste program.");
- }
- /**
- * Renders input for number.
- *
- * @return float firstNumber
- */
- public static float Number()
- {
- Control control = new Control();
- Console.WriteLine("Zadejte číslo:\n");
- float number = control.Float();
- return number;
- }
- }
- class Math
- {
- /**
- * Adds inputs.
- *
- * @param float firstNumber, float secondNumber, float[] results
- */
- public static void AddUp(float firstNumber, float secondNumber, float[] results)
- {
- float output = firstNumber + secondNumber;
- Render.Result(output, results);
- }
- /**
- * Subtracts inputs.
- *
- * @param float firstNumber, float secondNumber, float[] results
- */
- public static void Subtract(float firstNumber, float secondNumber, float[] results)
- {
- float output = firstNumber - secondNumber;
- Render.Result(output, results);
- }
- /**
- * Multiplies inputs.
- *
- * @param float firstNumber, float secondNumber, float[] results
- */
- public static void Multiply(float firstNumber, float secondNumber, float[] results)
- {
- float output = firstNumber * secondNumber;
- Render.Result(output, results);
- }
- /**
- * Divides inputs.
- *
- * @param float firstNumber, float secondNumber, float[] results
- */
- public static void Divide(float firstNumber, float secondNumber, float[] results)
- {
- if (secondNumber == 0)
- {
- Render.Error();
- }
- else
- {
- float output = firstNumber / secondNumber;
- Render.Result(output, results);
- }
- }
- /**
- * Roots inputs.
- *
- * @param float firstNumber, float[] results
- */
- public static void Sqrt(float firstNumber, float[] results)
- {
- float output = (float)System.Math.Sqrt(firstNumber);
- Render.Result(output, results);
- }
- /**
- * Raises input.
- *
- * @param float firstNumber, float[] results
- */
- public static void Power(float firstNumber, float[] results)
- {
- float output = (float)System.Math.Pow(firstNumber, 2);
- Render.Result(output, results);
- }
- }
- class Program
- {
- /**
- * Runs program and triggers actions.
- *
- * @param string[] args
- */
- public static void Main(string[] args)
- {
- Control control = new Control();
- float[] results = new float[2];
- bool again = true;
- while (again is true)
- {
- Render.Menu();
- Console.WriteLine("Co chcete udělat?:\n");
- int action = control.Int();
- switch (action)
- {
- case 1:
- Math.AddUp(Render.Number(), Render.Number(), results);
- break;
- case 2:
- Math.Subtract(Render.Number(), Render.Number(), results);
- break;
- case 3:
- Math.Multiply(Render.Number(), Render.Number(), results);
- break;
- case 4:
- Math.Divide(Render.Number(), Render.Number(), results);
- break;
- case 5:
- Math.Power(Render.Number(), results);
- break;
- case 6:
- Math.Sqrt(Render.Number(), results);
- break;
- case 7:
- Render.Results(results);
- break;
- default:
- Render.End();
- again = false;
- break;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement