using System.Collections.Generic;
using System.Runtime.ExceptionServices;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
static void Main(string[] args)
int gameMode, typeOfProblem, difficulty, numOfProblems;
int[,] mathEquationNums = new int[10, 4];
bool[] isRight = new bool[10];
Random rnd = new Random();
Console.WriteLine("Please pick a game mode: ");
Console.WriteLine("Practice [1]");
Console.WriteLine("Game [2]");
Console.WriteLine("Exit [3]");
if (int.TryParse(Console.ReadLine(), out gameMode))
Console.WriteLine("Pick problem type");
Console.WriteLine("Addition [1]");
Console.WriteLine("Subtraction [2]");
Console.WriteLine("Multiplication [3]");
Console.WriteLine("Division [4]");
Console.WriteLine("Random [5]");
if (int.TryParse(Console.ReadLine(), out typeOfProblem))
if ((typeOfProblem<1)||(typeOfProblem>5))
Console.WriteLine("Enter one of the actual values");
Console.WriteLine("How many problems do you want to answer?");
if (int.TryParse(Console.ReadLine(), out numOfProblems))
int[,] practiceEquations = doMath(numOfProblems, typeOfProblem);
RunMath(practiceEquations, true);
Console.WriteLine("What difficulty do you want? \nEasy [1]\nMedium [2]\nHard [3]");
if (int.TryParse (Console.ReadLine(), out difficulty))
mathEquationNums=doMath(10, 6);
RunMath(mathEquationNums);
mathEquationNums = doMath(10, 7);
RunMath(mathEquationNums);
mathEquationNums = doMath(10, 5);
RunMath(mathEquationNums);
Console.WriteLine("Enter a given number");
Console.WriteLine("Thanks for playing");
Console.WriteLine("Wrong input. Reenter");
Console.WriteLine("Wrong input, reinput.");
static int[,] doMath(int numOfProblems, int choice)
int[,] returnArray = new int[numOfProblems, 4];
bool anyGoes=false, addOrSub=false, mulOrDiv = false;
Random rnd = new Random();
returnArray[i, 0] = rnd.Next(0, 100);
returnArray[i, 1] = rnd.Next(0, 100);
returnArray[i, 2] = returnArray[i, 0] + returnArray[i, 1];
returnArray[i, 3] = choice;
returnArray[i, 2] = returnArray[i, 0] - returnArray[i, 1];
returnArray[i, 3] = choice;
returnArray[i, 0] = rnd.Next(0, 12);
returnArray[i, 1] = rnd.Next(0, 12);
returnArray[i, 2] = returnArray[i, 0] * returnArray[i, 1];
returnArray[i, 3] = choice;
returnArray[i, 1] = rnd.Next(0, 12);
if (returnArray[i,1] == 0)
returnArray[i, 0]=rnd.Next(0, 12);
returnArray[i, 0] = rnd.Next(0, 12) * returnArray[i, 1];
returnArray[i, 2] = returnArray[i, 0] / returnArray[i, 1];
returnArray[i, 3] = choice;
static void RunMath(int[,] questionArray, bool isPractice)
int answer = -100, numRight = 0;
for (int i = 0; i< questionArray.GetLength(1); i++)
switch (questionArray[i, 3])
Console.WriteLine($"{questionArray[i, 0]} + {questionArray[i, 1]} = ?");
Console.WriteLine($"{questionArray[i, 0]} - {questionArray[i, 1]} = ?");
Console.WriteLine($"{questionArray[i, 0]} * {questionArray[i, 1]} = ?");
Console.WriteLine($"{questionArray[i, 0]} / {questionArray[i, 1]} = ? (If the N/a put -1)");
if (int.TryParse(Console.ReadLine(), out answer))
if (answer == questionArray[i, 2])
Console.WriteLine("Your answer is right");
Console.WriteLine("You got the question wrong, the correct answer is [0]", questionArray[i, 2]);
Console.WriteLine("Put in a number this time");
Console.WriteLine("The number of questions right is " + numRight + " out of "+questionArray.GetLength(1)+" and the % answered correctly is " + (numRight * 100 / questionArray.GetLength(1))+ "%");