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.
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
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