// Edit a matrix table cells value and show total sum
// By DreamVB 10:26 08/10/2016

#include <iostream>
#include <conio.h>

using namespace std;
using std::cout;
using std::endl;

const int ROWS = 4;
const int COLS = 4;

void PrintMatrix(int src[ROWS][COLS],int ROWS, int COLS){

	int min = src[0][0];
	int i = 0;
	int j = 0;
	int sum = 0;

	system("cls");

	cout << endl;

	//Find highest number in matrix
	for (i = 0; i < ROWS; i++){
		for (j = 0; j < COLS; j++){
			//Get the sum of matrix
			sum += src[i][j];
		}
	}

	//Show sum of matrix table
	cout << "Sum of matrix is : " << sum << endl << endl;

	//Print pretty matrix table
	for (i = 0; i < COLS; i++){
		if (i < 1){
			//Add headers
			cout << "     " << (char)(65 + i);
		}
		else{
			//Add headers
			cout << "  " << (char)(65 + i);
		}
	}

	cout << endl;

	//Print matrix
	for (i = 0; i < ROWS; i++){
		//Add rows
		cout << "  " << (char)(65 + i);

		for (j = 0; j < COLS; j++){
			cout << "  " << src[i][j];
		}
		//Add line break
		cout << endl;
	}
}

int main(int argc, char *argv[]){
	int r = 0;
	int c = 0;
	int v = 0;
	int i = 0;
	int j = 0;
	int sum = 0;
	char ans = '\0';

	int matrix[ROWS][COLS] = {
		1, 2, 3, 4,
		5, 9, 4, 3,
		4, 7, 2, 1,
		8, 4, 3, 6
	};

	while (1)
	{

		PrintMatrix(matrix, ROWS, COLS);

		cout << "Eneter row ";
		cin >> r;
		cout << "Enter column ";
		cin >> c;
		cout << "Enter value one digit only ";
		cin >> v;

		//Update the matrix
		matrix[r][c] = v;

		//Show updated table.
		PrintMatrix(matrix, ROWS, COLS);

		//Ask user if they want change more data.
		cout << "Do you want to enter more data Y/N ";
		cin >> ans;

		if (toupper(ans) == 'N'){
			break;
		}
	}

	return 0;
}