//Create a custom calculator program capable of reading the input stream of an expression
//and make basic computations to provide answer.
//Your program will ask the user to enter an expression in one single line
//Use an array to capture the input
//Choose how you want to word the request to the user (bound your request)
//Your calculator should be able to do the following operations individually or in combinaison:
//Multiplication
//Division
//Addition
//Substration
//maximum
//minimum
//square
//squareroot
//solve a system of equations with 2 variables (using 2 dimensional arrays) (max power is 1)
/*
Ax + By = C
Dx + Ey = F
*/
//solve a quadratic equation of the form Ax2 + Bx + C = 0
//Iplement each operation process in a separate function, and use pointers to access values used in computations
//Use the Shunting-yard_algorithm found at https://en.wikipedia.org/wiki/Shunting-yard_algorithm to obtain the
//output string that you would procees further to compute the answer
//Make use of Matrix for the last two operations and access elements using pointers
//Create your program so that the user may enter input indefinitely if needed
//Make use of the program skeleton provided below, debug and develop your code based on it.
//You can expand on it, but you must use all variables and structures defined
//At any time, ask the user he/she would like to continue
//(i.e. continue to prompt user whether to repeat exercise again)
//Print the result at each stage
//Variable declaration
const int SysEqMatrixSize = 3;
const int QuadEqArraySize = 3;
const int sizeOfInputString = 50;
const int sizeOfOutputString = 128;
//Function Declaration *********************
//Initialize the matrix provided with zeros
int myMatrixInit(int **myMatrix, int numRows, int numCols);
int processMyOutput(char *stringForProcess);
int main()
{
    int myRow;
    int myColumn;
    char myInput[sizeOfInputString];
    char myOutput[sizeOfOutputString];
    int myInputLocation;   
    int mySysOfEqu2[SysEqMatrixSize][SysEqMatrixSize];
    int QuadEqu1[QuadEqArraySize];
    int repeat = 0;
    int answer = 0;   
    //Tell the user about your program: What it does and what is expected of user   
        //Ask whether to proceed   
        //Proceed and continue processing as long as the user wants
    while(repeat == 1)
    {
        myMatrixInit(mySysOfEqu2, SysEqMatrixSize, SysEqMatrixSize);
        myMatrixInit(QuadEqu1, QuadEqArraySize, 0);
       //Collect input from user: initialize input array (load all element with \0)
       //Call input function: use scanf("%s", myInput);
       //The 's' argument type after the percent character is for string input
       //character string (not quoted); char * ; pointing to an array of characters
       //large enough for the string and a terminating '\0' that will be added
       //The name of the array is a pointer to the address of that array      
       //Check input: Design the format you want for your input and request it from user
       // if the input violates your requirements, then print error and prompt user again
       //Process execution: You must use the core code structure below
       // You may rearange it elsewhere in a function
       //***********
       //If regular expression, then do this
       //Use the Shunting-yard_algorithm found at https://en.wikipedia.org/wiki/Shunting-yard_algorithm to obtain the
       //output string that you would procees further to compute the answer
       if(shunting_yard(myInput, myOutput))
            answer = processMyOutput(myOutput);
       //Print the result at each stage
 
//Function Definitions ****************
//Passing by address
int myMatrixInit(int **myMatrix, int numRows, int numCols)
{
    //Complete with code
}
int processMyOutput(char *stringForProcess){
    //Complete with code
}
//*****************
//insert other function definition here