Skip to content

Latest commit

 

History

History
118 lines (111 loc) · 4.73 KB

File metadata and controls

118 lines (111 loc) · 4.73 KB

Problema

24 - Implementa o programa anterior de forma interativa e em ciclo. O programa deve solicitar a operação e os dois argumentos ao utilizador, apresentar a o resultado e voltar a fazer novo pedido de operação. O programa deve terminar apenas quando o utilizador escrever END em qualquer uma das solicitações. Se o programa não reconhecer a operação, deve voltar a pedir a mesma ao utilizador. Ao terminar, o programa deve indicar ainda quantas operações realizou.

Pontos extra: Como detetar e recuperar de um valor que não seja possível converter para double?

Soluções

Solução 1

using System;
namespace cscalc
{
    class Program
    {
        static void Main(string[] args)
        {
            // Will record the times the many operations were made
            int opTimes = 0;
            // Declared variables for the two numbers in the operation
            double numFirst, numSecond;
            // Strings for the operand and the first and second input string
            string op, strFirst, strSecond;
            // A do while() cicle in order to loop the question till the user
            // breaks out
            do
            {
                // Asks the player the operator and stores it
                Console.WriteLine("Please input the operator.");
                op = Console.ReadLine();
                // In case the user inputs "END", the program breaks from the 
                // loop
                if (op == "END")
                {
                    break;
                }
                // Checks if the operator is valid 
                if (op != "+" && op != "-" && op != "/" && op != "x" 
                && op != "p")
                {
                    Console.WriteLine("Invalid operand. Please input again.");
                    continue;
                }
                // Asks the player the first number and stores it
                Console.WriteLine("Please input the first number.");
                strFirst = Console.ReadLine();
                // In case the user inputs "END", the program breaks from the 
                // loop
                if (strFirst == "END")
                {
                    break;
                }
                // Converts the input string to a double, and then stores it at
                // the numFirst variable
                numFirst = double.Parse(strFirst);
                // Asks the player the second number and stores it
                Console.WriteLine("Please input the second number.");
                strSecond = Console.ReadLine();
                // In case the user inputs "END", the program breaks from the 
                // loop
                if (strSecond == "END")
                {
                    break;
                }
                // Converts the input string to a double, and then stores it at
                // the numSecond variable
                numSecond = double.Parse(strSecond);
                // A switch case to decide the operation according to op.
                // First lines declare the variable of the operation and realize
                // said operation, while second lines demonstrate that to the
                // user, and finally third line increments the number of 
                // operations made.
                switch(op)
                {
                    case "+":
                        double sum = numFirst + numSecond;
                        Console.WriteLine($"{numFirst} + {numSecond} = {sum}");
                        opTimes += 1;
                        break;
                    case "-":
                        double sub = numFirst - numSecond;
                        Console.WriteLine($"{numFirst} - {numSecond} = {sub}");
                        opTimes += 1;
                        break;
                    case "/":
                        double div = numFirst / numSecond;
                        Console.WriteLine($"{numFirst} / {numSecond} = {div}");
                        opTimes += 1;
                        break;
                    case "x":
                        double mult = numFirst * numSecond;
                        Console.WriteLine($"{numFirst} x {numSecond} = {mult}");
                        opTimes += 1;
                        break;
                    case "p":
                        Console.WriteLine($"{numFirst} ^ {numSecond} = " 
                            + Math.Pow(numFirst, numSecond));
                        opTimes += 1;
                        break;
                }
            } while(true);
            // Shows the player the number of operations before exiting
            Console.WriteLine($"You have made {opTimes} operations.");
            
        }
    }
}

Por Marco Domingos