using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Calculator
{
public class Program
{
static void Main(string[] args)
{
ConsoleKeyInfo keyinput;
try
{
do
{
Console.WriteLine("Press : 1,2,3,4,5,6 to choose which arithmetic operation you want.\n1=additon, 2=subtract, 3=product, 4=quotient, 5=square, 6=square root.\nAlso press ESC to quit.");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
else if (keyinput.Key != ConsoleKey.Escape)
{
if (keyinput.Key == ConsoleKey.D1)
{
Console.WriteLine("\nChoose a left number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Choose a right number and press Enter :");
double num2 = Convert.ToDouble(Console.ReadLine());
double result = Ops.AddNumbers(num1, num2);
Console.WriteLine("Arithmetic operation : {0} + {1} = {2}", num1, num2, result);
double lastOp = Ops.AddNumbers(num1,num2);
string opSign = "+";
do
{
Console.WriteLine("\nDo you wish to continue operations with {0}? \nPress Enter to 'Yes' or ESC to 'No' :", result);
Console.WriteLine("You can press 'S' to save this operation and run it again later.");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.S)
{
Console.WriteLine("\nThe operation is saved succuessfull!");
keyinput = Console.ReadKey();
}
if (keyinput.Key == ConsoleKey.Enter)
{
Console.Clear();
Console.WriteLine("Press : 1,2,3,4,5,6 to choose which arithmetic operation \nyou want to do with {0}?\n1=additon, 2=subtract, 3=product, 4=quotient, 5=square, 6=square root.\nYou can press 'R' to run last operation again.\nAlso press ESC to start operations with new numbers.", result);
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
continue;
}
if (keyinput.Key == ConsoleKey.R)
{
Console.Write("\nArithmetic operation : {0} {1} {2} = {3}", num1, opSign, num2, lastOp);
}
else if (keyinput.Key == ConsoleKey.D1)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.AddNumbers(num1, num2);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
lastOp = Ops.AddNumbers(num1,num2);
opSign = "+";
}
else if (keyinput.Key == ConsoleKey.D2)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.SubtractNumbers(num1, num2);
Console.WriteLine("{0} - {1} = {2}", num1, num2, result);
lastOp = Ops.SubtractNumbers(num1,num2);
opSign = "-";
}
else if (keyinput.Key == ConsoleKey.D3)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.ProductNumbers(num1, num2);
Console.WriteLine("{0} * {1} = {2}", num1, num2, result);
lastOp = Ops.ProductNumbers(num1,num2);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D4)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.DevideNumbers(num1, num2);
if (num1 == 0 || num2 == 0)
{
Console.WriteLine("Whoops there is a problem here, you can't devide by zero!");
throw new DivideByZeroException();
}
Console.WriteLine("{0} : {1} = {2}", num1, num2, result);
lastOp = Ops.DevideNumbers(num1,num2);
opSign = ":";
}
else if (keyinput.Key == ConsoleKey.D5)
{
num1 = result;
result = Ops.square(result);
Console.WriteLine("\nThe square of number {0} is equals to {1}", num1, result);
num2 = num1;
lastOp = Ops.ProductNumbers(num1,num2);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D6)
{
num1 = result;
result = Ops.squareRoot(result);
if (num1 < 0)
{
Console.WriteLine("\nYou just can't get square root from negative number.");
throw new ArithmeticException();
}
Console.WriteLine("\nThe square root of number {0} is equals to {1}", num1, result);
num2 = result;
lastOp = Ops.squareRoot(num1);
opSign = "/";
}
else
{
Console.WriteLine("\nWhoops there is a problem here, you can press here only following : \n1,2,3,4,5,6,ESC.\nPress ESC to quit or any other key to continue :");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
continue;
}
}
} while (keyinput.Key != ConsoleKey.Escape);
}
else if (keyinput.Key == ConsoleKey.D2)
{
Console.WriteLine("\nChoose a left number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Choose a right number and press Enter :");
double num2 = Convert.ToDouble(Console.ReadLine());
double result = Ops.SubtractNumbers(num1, num2);
double lastOp = Ops.SubtractNumbers(num1,num2);
string opSign = "-";
Console.WriteLine("Arithmetic operation : {0} - {1} = {2}", num1, num2, result);
do
{
Console.WriteLine("\nDo you wish to continue operations with {0}? \nPress Enter to 'Yes' or ESC to 'No' :", result);
Console.WriteLine("You can press 'S' to save this operation and run it again later.");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.S)
{
Console.WriteLine("\nThe operation is saved succuessfull!");
keyinput = Console.ReadKey();
}
if (keyinput.Key == ConsoleKey.Enter)
{
Console.Clear();
Console.WriteLine("Press : 1,2,3,4,5,6 to choose which arithmetic operation \nyou want to do with {0}?\n1=additon, 2=subtract, 3=product, 4=quotient, 5=square, 6=square root.\nYou can press 'R' to run last operation again.\nAlso press ESC to start operations with new numbers.", result);
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
continue;
}
if (keyinput.Key == ConsoleKey.R)
{
Console.Write("\nArithmetic operation : {0} {1} {2} = {3}", num1, opSign, num2, lastOp);
}
else if (keyinput.Key == ConsoleKey.D1)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.AddNumbers(num1, num2);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
lastOp = Ops.AddNumbers(num1,num2);
opSign = "+";
}
else if (keyinput.Key == ConsoleKey.D2)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.SubtractNumbers(num1, num2);
Console.WriteLine("{0} - {1} = {2}", num1, num2, result);
lastOp = Ops.SubtractNumbers(num1,num2);
opSign = "-";
}
else if (keyinput.Key == ConsoleKey.D3)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.ProductNumbers(num1, num2);
Console.WriteLine("{0} * {1} = {2}", num1, num2, result);
lastOp = Ops.ProductNumbers(num1,num2);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D4)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.DevideNumbers(num1, num2);
if (num1 == 0 || num2 == 0)
{
Console.WriteLine("Whoops there is a problem here, you can't devide by zero!");
throw new DivideByZeroException();
}
Console.WriteLine("{0} : {1} = {2}", num1, num2, result);
lastOp = Ops.DevideNumbers(num1,num2);
opSign = ":";
}
else if (keyinput.Key == ConsoleKey.D5)
{
num1 = result;
result = Ops.square(result);
Console.WriteLine("\nThe square of number {0} is equals to {1}", num1, result);
num2 = num1;
lastOp = Ops.square(num1);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D6)
{
num1 = result;
result = Ops.squareRoot(result);
if (num1 < 0)
{
Console.WriteLine("\nYou just can't get square root from negative number.");
throw new ArithmeticException();
}
Console.WriteLine("\nThe square root of number {0} is equals to {1}", num1, result);
num2 = result;
lastOp = Ops.squareRoot(num1);
opSign = "/";
}
else
{
Console.WriteLine("\nWhoops there is a problem here, you can press here only following : \n1,2,3,4,5,6,ESC.\nPress ESC to quit or any other key to continue :");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
continue;
}
}
} while (keyinput.Key != ConsoleKey.Escape);
}
else if (keyinput.Key == ConsoleKey.D3)
{
Console.WriteLine("\nChoose a left number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Choose a right number and press Enter :");
double num2 = Convert.ToDouble(Console.ReadLine());
double result = Ops.ProductNumbers(num1, num2);
double lastOp = Ops.ProductNumbers(num1,num2);
string opSign = "*";
Console.WriteLine("Arithmetic operation : {0} * {1} = {2}", num1, num2, result);
do
{
Console.WriteLine("\nDo you wish to continue operations with {0}? \nPress Enter to 'Yes' or ESC to 'No' :", result);
Console.WriteLine("You can press 'S' to save this operation and run it again later.");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.S)
{
Console.WriteLine("\nThe operation is saved succuessfull!");
keyinput = Console.ReadKey();
}
if (keyinput.Key == ConsoleKey.Enter)
{
Console.Clear();
Console.WriteLine("Press : 1,2,3,4,5,6 to choose which arithmetic operation \nyou want to do with {0}?\n1=additon, 2=subtract, 3=product, 4=quotient, 5=square, 6=square root.\nYou can press 'R' to run last operation again.\nAlso press ESC to start operations with new numbers.", result);
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
continue;
}
if (keyinput.Key == ConsoleKey.R)
{
Console.Write("\nArithmetic operation : {0} {1} {2} = {3}", num1, opSign, num2, lastOp);
}
else if (keyinput.Key == ConsoleKey.D1)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.AddNumbers(num1, num2);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
lastOp = Ops.AddNumbers(num1,num2);
opSign = "+";
}
else if (keyinput.Key == ConsoleKey.D2)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.SubtractNumbers(num1, num2);
Console.WriteLine("{0} - {1} = {2}", num1, num2, result);
lastOp = Ops.SubtractNumbers(num1,num2);
opSign = "-";
}
else if (keyinput.Key == ConsoleKey.D3)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.ProductNumbers(num1, num2);
Console.WriteLine("{0} * {1} = {2}", num1, num2, result);
lastOp = Ops.ProductNumbers(num1,num2);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D4)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.DevideNumbers(num1, num2);
if (num1 == 0 || num2 == 0)
{
Console.WriteLine("Whoops there is a problem here, you can't devide by zero!");
throw new DivideByZeroException();
}
Console.WriteLine("{0} : {1} = {2}", num1, num2, result);
lastOp = Ops.DevideNumbers(num1,num2);
opSign = ":";
}
else if (keyinput.Key == ConsoleKey.D5)
{
num1 = result;
result = Ops.square(result);
Console.WriteLine("\nThe square of number {0} is equals to {1}", num1, result);
num2 = num1;
lastOp = Ops.square(num1) ;
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D6)
{
num1 = result;
result = Ops.squareRoot(result);
if (num1 < 0)
{
Console.WriteLine("\nYou just can't get square root from negative number.");
throw new ArithmeticException();
}
Console.WriteLine("\nThe square root of number {0} is equals to {1}", num1, result);
num2 = result;
lastOp = Ops.squareRoot(num1) ;
opSign = "/";
}
else
{
Console.WriteLine("\nWhoops there is a problem here, you can press here only following : \n1,2,3,4,5,6,ESC.\nPress ESC to quit or any other key to continue :");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
continue;
}
}
} while (keyinput.Key != ConsoleKey.Escape);
}
else if (keyinput.Key == ConsoleKey.D4)
{
Console.WriteLine("\nChoose a left number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Choose a right number and press Enter :");
double num2 = Convert.ToDouble(Console.ReadLine());
double lastOp = Ops.DevideNumbers(num1,num2);
string opSign = ":";
if (num1 == 0 || num2 == 0)
{
Console.WriteLine("Whoops there is a problem here, you can't devide by zero!");
throw new DivideByZeroException();
}
double result = Ops.DevideNumbers(num1, num2);
Console.WriteLine("Arithmetic operation : {0} : {1} = {2}", num1, num2, result);
do
{
Console.WriteLine("\nDo you wish to continue operations with {0}? \nPress Enter to 'Yes' or ESC to 'No' :", result);
Console.WriteLine("You can press 'S' to save this operation and run it again later.");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.S)
{
Console.WriteLine("\nThe operation is saved succuessfull!");
keyinput = Console.ReadKey();
}
if (keyinput.Key == ConsoleKey.Enter)
{
Console.Clear();
Console.WriteLine("Press : 1,2,3,4,5,6 to choose which arithmetic operation \nyou want to do with {0}?\n1=additon, 2=subtract, 3=product, 4=quotient, 5=square, 6=square root.\nYou can press 'R' to run last operation again.\nAlso press ESC to start operations with new numbers.", result);
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
continue;
}
if (keyinput.Key == ConsoleKey.R)
{
Console.Write("\nArithmetic operation : {0} {1} {2} = {3}", num1, opSign, num2, lastOp);
}
else if (keyinput.Key == ConsoleKey.D1)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.AddNumbers(num1, num2);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
lastOp = Ops.AddNumbers(num1, num2);
opSign = "+";
}
else if (keyinput.Key == ConsoleKey.D2)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.SubtractNumbers(num1, num2);
Console.WriteLine("{0} - {1} = {2}", num1, num2, result);
lastOp = Ops.SubtractNumbers(num1, num2);
opSign = "-";
}
else if (keyinput.Key == ConsoleKey.D3)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.ProductNumbers(num1, num2);
Console.WriteLine("{0} * {1} = {2}", num1, num2, result);
lastOp = Ops.ProductNumbers(num1, num2);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D4)
{
num1 = result;
Console.WriteLine("\nThe left number is {0}, choose a right number and press Enter :", result);
num2 = Convert.ToDouble(Console.ReadLine());
result = Ops.DevideNumbers(num1, num2);
if (num1 == 0 || num2 == 0)
{
Console.WriteLine("Whoops there is a problem here, you can't devide by zero!");
throw new DivideByZeroException();
}
Console.WriteLine("{0} : {1} = {2}", num1, num2, result);
lastOp = Ops.DevideNumbers(num1, num2);
opSign = ":";
}
else if (keyinput.Key == ConsoleKey.D5)
{
num1 = result;
result = Ops.square(result);
Console.WriteLine("\nThe square of number {0} is equals to {1}", num1, result);
num2 = num1;
lastOp = Ops.square(num1);
opSign = "*";
}
else if (keyinput.Key == ConsoleKey.D6)
{
num1 = result;
result = Ops.squareRoot(result);
if (num1 < 0)
{
Console.WriteLine("\nYou just can't get square root from negative number.");
throw new ArithmeticException();
}
Console.WriteLine("\nThe square root of number {0} is equals to {1}", num1, result);
num2 = result;
lastOp = Ops.squareRoot(num1);
opSign = "/";
}
else
{
Console.WriteLine("\nWhoops there is a problem here, you can press here only following : \n1,2,3,4,5,6,ESC.\nPress ESC to quit or any other key to continue :");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
continue;
}
}
} while (keyinput.Key != ConsoleKey.Escape);
}
else if (keyinput.Key == ConsoleKey.D5)
{
Console.WriteLine("\nChoose a number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
double result = Ops.square(num1);
Console.WriteLine("The square of number {0} is equals to {1}", num1, result);
}
else if (keyinput.Key == ConsoleKey.D6)
{
Console.WriteLine("\nChoose a number and press Enter :");
double num1 = Convert.ToDouble(Console.ReadLine());
double result = Ops.squareRoot(num1);
if (num1<0)
{
Console.WriteLine("You just can't get square root from negative number.");
throw new ArithmeticException();
}
Console.WriteLine("The square root of number {0} is equals to {1}", num1, result);
}
else
{
Console.WriteLine("\nWhoops there is a problem here, you can press here only following : \n1,2,3,4,5,6,ESC.\nPress ESC to quit or any other key to continue :");
keyinput = Console.ReadKey();
if (keyinput.Key == ConsoleKey.Escape)
{
return;
}
Console.Clear();
continue;
}
}
Console.WriteLine("\nPress ESC to exit the program or any other key to starts \nnew operations with new numbers :");
keyinput = Console.ReadKey();
Console.Clear();
} while (keyinput.Key != ConsoleKey.Escape);
}
catch (ArithmeticException z)
{
Console.WriteLine(z.Message);
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
catch (FormatException c)
{
Console.WriteLine(c.Message);
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
}
public static class Ops
{
public static double AddNumbers(double num1, double num2)
{
return num1 + num2;
}
public static double SubtractNumbers(double num1, double num2)
{
return num1 - num2;
}
public static double ProductNumbers(double num1, double num2)
{
return num1 * num2;
}
public static double DevideNumbers(double num1, double num2)
{
return num1 / num2;
}
public static double square(double num1)
{
return num1 * num1;
}
public static double squareRoot(double num1)
{
return Math.Sqrt(num1);
}
}
}