Esempio n. 1
0
        public void Сalculate(CalculatorTask task)
        {
            Operation operation = Unknown;

            switch (task.command)
            {
            case Command.Add:
                operation = Add;
                break;

            case Command.Subtract:
                operation = Subtract;
                break;

            case Command.Multiply:
                operation = Multiply;
                break;

            case Command.Divide:
                operation = Divide;
                break;
            }

            CalculatorResult result = operation(task.number1, task.number2);

            Subscribe?.Invoke(task, result);
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            Calculator calculator = new Calculator();

            calculator.Subscribe += ShowResult;

            while (true)
            {
                try
                {
                    CalculatorTask task = InputCalculatorTask();
                    calculator.Сalculate(task);
                } catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
Esempio n. 3
0
        public static void ShowResult(CalculatorTask task, CalculatorResult result)
        {
            if (!result.unknown)
            {
                Console.Write($"{task.number1} {task.symbol} {task.number2} = ");

                if (result.infinity)
                {
                    Console.WriteLine("Infinity");
                }
                else
                {
                    Console.WriteLine(result.data);
                }
            }
            else
            {
                Console.WriteLine("Unknown operation");
            }
        }
Esempio n. 4
0
        public static CalculatorTask InputCalculatorTask()
        {
            CalculatorTask task = new CalculatorTask();

            Console.WriteLine();
            Console.Write("A: ");
            task.number1 = Convert.ToDouble(Console.ReadLine());

            Console.Write("B: ");
            task.number2 = Convert.ToDouble(Console.ReadLine());

            Console.Write("Operation: ");
            task.symbol = Console.ReadLine();


            switch (task.symbol)
            {
            case "+":
                task.command = Command.Add;
                break;

            case "-":
                task.command = Command.Subtract;
                break;

            case "*":
                task.command = Command.Multiply;
                break;

            case "/":
            case ":":
                task.command = Command.Divide;
                break;

            default:
                task.command = Command.Unknown;
                break;
            }

            return(task);
        }