/* CS1711B - 1998/10/19 Modular arithmetic tables*/ #include void get_input(int& m); /* the integer m is the modulus for use in the tables*/ //print header row function void print_header(int modulus, char operation); //print row function void print_row(int row_count, int modulus, char operation); int main() { int modulus, row_count; char operation; //input modulus get_input(modulus); cout << "\nThe modular arithmetic tables are\n"; // print + table //print header row for + operation = '+'; print_header(modulus,operation); //initialize row count, print rows row_count = 0; while (row_count < modulus ) { print_row(row_count, modulus, operation); row_count++; } // print * table //print header row for * operation = '*'; print_header(modulus,operation); //initialize row count, print rows row_count = 0; while (row_count < modulus ) { print_row(row_count, modulus, operation); row_count++; } return 0; } // input function void get_input(int& modulus) { int err_count = 0; cout << "\nEnter a positive integer > " << endl; cin >> modulus; //trap for errors while ((modulus <= 0) && (err_count < 3)) { cout << "Input error - please enter a POSITIVE integer >" << endl; cin >> modulus; err_count++; } if (err_count >= 3) cout << "Your table will contain errors!" << endl; // return modulus; NOTE that we have deleted this!!! } //print header row function void print_header(int modulus, char operation) //print operator { cout << endl << endl << operation << " "; //initialize column count, print column counts for (int i = 0; i < modulus; i++) cout << i << " "; cout << endl; } //print row function void print_row(int row_count, int modulus, char operation) //print row count //initialize column count, (print row + column)*modulus, increment col count { int col_count = 0; cout << row_count << " "; while (col_count < modulus) { if (operation =='+') cout << (row_count + col_count)%modulus << " "; else if (operation =='*') cout << (row_count * col_count)%modulus << " "; col_count++; } cout << endl; }