#include <iostream>
#include <iomanip>
using namespace std;
const int ROWS = 3;
const int COLS = 4;
void getTotal(int[ROWS][COLS], int &);
void getAverage(int[ROWS][COLS], double&);
void getRowTotal(int[ROWS][COLS], int, int&);
void getColumnTotal(int[ROWS][COLS], int, int&);
void getHighestInRow(int[ROWS][COLS], int, int&);
void getLowestInRow(int[ROWS][COLS], int, int&);
void tblImg(int[ROWS][COLS]); //values table
void err(); //fix cin errors
int main(){
char again = 'y';
while (again == 'y' || again == 'Y'){
int arrayx[ROWS][COLS] = { { 31, 41, 11, 91 }, { 62, 32, 72, 12 }, { 93, 73, 33, 23 } },
ttl = 0, trow = 0, tcol = 0, hrow = 0, lrow = 0, usrRow = 0, usrCol = 0;
double avg = 0;
tblImg(arrayx); //display table to user
cout << "Enter a Row (1-3): ";
cin >> usrRow;
while (cin.fail() || usrRow < 1 || usrRow > 3){ //fix letter and negative
err();
cout << "Enter a Row (1-3): ";
cin >> usrRow;
}
cout << "Enter a Column (1-4): ";
cin >> usrCol;
while (cin.fail() || usrCol < 1 || usrCol > 4){ //fix letter and negative
err();
cout << "Enter a Column (1-4): ";
cin >> usrCol;
}
getTotal(arrayx, ttl);
getAverage(arrayx, avg);
getRowTotal(arrayx, usrRow , trow);
getColumnTotal(arrayx, usrCol, tcol);
getHighestInRow(arrayx, usrRow, hrow);
getLowestInRow(arrayx, usrRow, lrow);
cout << "Total: " << ttl << endl
<< "Average: " << setprecision(2) << fixed << avg << flush << endl
<< "Row total: " << trow << endl
<< "Column total: " << tcol << endl
<< "Highest number in row is: " << hrow << endl
<< "Lowest number in row is: " << lrow << endl;
cout << "\n\t\t\tEnter y or Y to repeat: ";
cin >> again;
}
}
void getTotal(int ttlArray[ROWS][COLS], int& ttlOut){
for (int ir = 0; ir < ROWS; ir++){
for (int ic = 0; ic < COLS; ic++)
ttlOut += ttlArray[ir][ic];
}
}
void getAverage(int avgArray[ROWS][COLS], double& avgOut){
for (int ir = 0; ir < ROWS; ir++){
for (int ic = 0; ic < COLS; ic++)
avgOut += avgArray[ir][ic]; //sum
}
avgOut /= (ROWS*COLS); //avg
}
void getRowTotal(int rowArray[ROWS][COLS], int row, int& ttlRow){
for (int ic = 0; ic < COLS; ic++)
ttlRow += rowArray[row-1][ic];
}
void getColumnTotal(int colArray[ROWS][COLS], int col, int& ttlCol){
for (int ir = 0; ir < ROWS; ir++)
ttlCol += colArray[ir][col-1];
}
void getHighestInRow(int rowHigh[ROWS][COLS], int row, int& rowHighOut){
for (int ic = 0; ic < COLS; ic++){
if (rowHigh[row-1][ic] >= rowHighOut) //value greater than output, replace
rowHighOut = rowHigh[row-1][ic];
}
}
void getLowestInRow(int rowLow[ROWS][COLS], int row, int& rowLowOut){
rowLowOut = rowLow[row-1][0]; //initialize
for (int ic = 0; ic < COLS; ic++){
if (rowLow[row-1][ic] <= rowLowOut) //output greater than value, replace
rowLowOut = rowLow[row-1][ic];
}
}
void tblImg(int xRay[ROWS][COLS]){
cout << "\n ||C1||C2||C3||C4||\n"
<< " ------------------\n";
for (int ir = 0; ir < ROWS; ir++){
cout << "(Row " << ir + 1 << ")||";
for (int ic = 0; ic < COLS; ic++)
cout << setw(2) << setfill('0') << xRay[ir][ic] << "||";
cout << endl;
}
cout << endl;
}
void err(){
cout << "\t\t/!\\ ERROR /!\\\n";
cin.clear();
fflush(stdin);
}
Comments