I have recently started a new job, and with it I decided to do mentoring for a junior developer program. Because of this, I will be working on puzzles / mini-apps with them and I will be posting my solutions to them here for anyone else to use :). It is easiest for me to guide when I solve the problem beforehand. Below is a C# calculator without order of operations (to keep it simple this is a good starting place). Next will be one with order of operations using the tree method.
This is the Program.cs file below.
namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
Calculator _calculator = new Calculator();
_calculator.InitialPrompt();
}
}
}
This is some class file, for ex. Calculator.cs below:
using System;
namespace ConsoleApplication1
{
public class Calculator
{
public void InitialPrompt()
{
Console.WriteLine("1st number");
decimal firstNum = int.Parse(Console.ReadLine());
Console.WriteLine("operation");
SharedPrompt(firstNum);
}
public void ContinuedPrompt(decimal previousSolution)
{
decimal firstNum = previousSolution;
Console.WriteLine("Your previous solution was: " + previousSolution);
Console.WriteLine("What operation would you like to do to this previous solution?");
SharedPrompt(firstNum);
}
public void SharedPrompt(decimal firstNum)
{
string oper = Console.ReadLine();
Console.WriteLine("2nd number");
decimal secondNum = int.Parse(Console.ReadLine());
decimal solution = Calculate(firstNum, oper, secondNum);
Console.WriteLine("Your answer is: " + solution);
Console.ReadLine();
Console.WriteLine("Would you like to continue, do a new problem, or quit? C/N/Q?");
string nextStep = Console.ReadLine();
// Continue with same problem
if (nextStep == "C")
{
ContinuedPrompt(solution);
}
// New problem
else if (nextStep == "N")
{
InitialPrompt();
}
}
public decimal Calculate(decimal firstNum, string oper, decimal secondNum)
{
decimal solution = 0;
switch (oper)
{
case "+":
solution = firstNum + secondNum;
break;
case "-":
solution = firstNum - secondNum;
break;
case "*":
solution = firstNum * secondNum;
break;
case "/":
solution = firstNum / secondNum;
break;
}
return solution;
}
}
}
