#include <iostream>
using namespace std;
//This program will test three functions capable of reading, adding,
//and printing 100-digit numbers.

// Do not change these function prototypes:
void readBig(int[]);
void printBig(int[]);
void addBig(int[], int[], int[]);

// This constant should be 100 when the program is finished.
const int MAX_DIGITS = 100;

//There should be no changes made to the main program when you turn it in.
int main()
    {
    // Declare the three numbers, the first, second and the sum:
    int num1[MAX_DIGITS], num2[MAX_DIGITS], sum[MAX_DIGITS];
    bool done = false;
    char response;
    while (not done)
        {
        cout << "Please enter a number up to "<<MAX_DIGITS<< " digits: ";
        readBig(num1);
        cout << "Please enter a number up to "<<MAX_DIGITS<< " digits: ";
        readBig(num2);
        addBig(num1, num2, sum);
        printBig(num1);
        cout << "\n+\n";
        printBig(num2);
        cout << "\n=\n";
        printBig(sum);
        cout << "\n";
        cout <<"test again?";
        cin>>response;
        cin.ignore(900,'\n');
        done = toupper(response)!='Y';
        }
    return 0;
    }

//ReadBig will read a number as a string,
//It then converts each element of the string to an integer and stores it in an integer array.
//Finally, it reverses the elements of the array so that the ones digit is in element zero,
//the tens digit is in element 1, the hundreds digit is in element 2, etc.

//AddBig adds the corresponding digits of the first two arrays and stores the answer in the third.
//In a second loop, it performs the carry operation.

//PrintBig uses a while loop to skip leading zeros and then uses a for loop to print the number.