Skip to content

Latest commit

 

History

History
156 lines (136 loc) · 5.24 KB

File metadata and controls

156 lines (136 loc) · 5.24 KB

Problema

23 - Escreve um programa que sirva como calculadora de linha de comandos, aceitando três argumentos: 1) a operação a realizar; 2) o primeiro operando; e, 3) o segundo operando. A calculadora deve reconhecer as seguintes operações indicadas no primeiro argumento: +, -, /, x e p (sendo que última representa a operação de potenciação). A calculadora deve realizar a operação entre os dois operandos (que se podem assumir como doubles), mostrar o resultado e terminar a execução. Se não forem indicados três argumentos, ou se a operação não for conhecida, o programa deve terminar com uma mensagem de erro apropriada.

Exemplo de execução: dotnet run -- + 3.2 5, que deverá mostrar 8.2.

Soluções

Solução 1

using System;

namespace taschenrechner
{
    class Program
    {
        static void Main(string[] args)
        {
            // Declarar variáveis para operadores e para os números
            string operand;
            double numOne;
            double numTwo;

            // Se utilizador inserir +/- de 3 argumentos
            if (args.Length != 3)
            {
              Console.WriteLine("Erro! Tem que inserir 3 argumentos");
              return;
            }

            // Conversão de tipos
            operand = args[0];
            numOne = Convert.ToDouble(args[1]);
            numTwo = Convert.ToDouble(args[2]);

            // Se utilizador não meter os operadores indicados
            if (operand != "+" && operand != "-" && operand != "*" && operand
                != "/" && operand != "p")  
            {
                Console.WriteLine($@"Erro! O caráter ""{operand}"" é inválido!"
                    + $" Operação desconhecida programa ira fechar.");
                return;
            }

            // Switch loop para cada operação desejada
            switch (operand)
            {
                case "+":
                    double sum = numOne + numTwo;
                    Console.WriteLine($"{numOne} + {numTwo} " +
                        $"= {sum}");
                    break;

                case "-":
                    double minus = numOne - numTwo;
                    Console.WriteLine($"{numOne} - {numTwo} " +
                        $"= {minus}");
                    break;

                case "*":
                    double mult = numOne * numTwo;
                    Console.WriteLine($"{numOne} * {numTwo} " +
                        $"= {mult}");
                    break;

                case "/":
                    double div = numOne / numTwo;
                    Console.WriteLine($"{numOne} / {numTwo} " +
                        $"= {div}");
                    break;

                case "p":
                    double poten = Math.Pow(numOne, numTwo);
                    Console.WriteLine($"{numOne} ^ {numTwo} " +
                        $"= {poten}");
                    break;
            }
        }
    }
}

Por Ana Dos Santos

Solução 2

using System;
namespace cscalc
{
    class Program
    {
        static void Main(string[] args)
        {
            // Declares the variables for the first and second number 
            // respectivelly
            double numFirst, numSecond;
            // Verifies if length of the arguments is greater or shorter than 3
            if (args.Length != 3)
            {
                Console.WriteLine("Error: Please input only 3 arguments.");
                System.Environment.Exit(1);
            }
            // Converts the two string numbers from the input into doubles
            numFirst = double.Parse(args[1]);
            numSecond = double.Parse(args[2]);
            // Verifies the operand. In case it does not match with any of them,
            // it enters default, ending the program.
            // Each case comes in this structure: The operation variable is 
            // declared and the operation is done, the operation and consequent
            // result is shown to the player on the next line, and then it 
            // breaks.
            switch(args[0])
            {
                case "+":
                    double sum = numFirst + numSecond;
                    Console.WriteLine($"{numFirst} + {numSecond} = {sum}");
                    break;
                case "-":
                    double sub = numFirst - numSecond;
                    Console.WriteLine($"{numFirst} - {numSecond} = {sub}");
                    break;
                case "/":
                    double div = numFirst / numSecond;
                    Console.WriteLine($"{numFirst} / {numSecond} = {div}");
                    break;
                case "x":
                    double mult = numFirst * numSecond;
                    Console.WriteLine($"{numFirst} x {numSecond} = {mult}");
                    break;
                case "p":
                    Console.WriteLine($"{numFirst} ^ {numSecond} = " 
                        + Math.Pow(numFirst, numSecond));
                    break;
                default:
                    Console.WriteLine("Error: Invalid Operand.");
                    System.Environment.Exit(1);
                    break;
            }
            
        }
    }
}

Por Marco Domingos