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