#include <stdio.h>

#define ROWS 3
#define COLS 4


int M[ROWS][COLS];


void leggi() {
	int i, j;
	for (i = 0; i < ROWS; i++)
		for (j = 0; j < COLS; j++) {
			printf("Elemento %d %d ->", i, j);
			scanf("%d", &M[i][j]);
		}
}

void leggi2() {
	int i, j;
	printf("\nImmetti la matrice %d X %d:\n", ROWS, COLS);
	for (i = 0; i < ROWS; i++)
		for (j = 0; j < COLS; j++)
			scanf("%d", &M[i][j]);

}


void scrivi() {
	int i, j;

	for (i = 0; i < ROWS; i++) {
		for (j = 0; j < COLS; j++)
			printf("%3d ", M[i][j]);
		printf("\n");
	}

}

int trova_massimo() { /// il minimo e' identico
	int i, j;
	int massimo = M[0][0];
	for (i = 0; i < ROWS; i++)
		for (j = 0; j < COLS; j++) {
			if (M[i][j] > massimo)
				massimo = M[i][j];
		}
	return massimo;
}

int trova_massimo_riga(int n_riga) {
	int i;
	int massimo = M[n_riga][0];

	for (i = 0; i < COLS; i++) {
		if (M[n_riga][i] > massimo)
			massimo = M[n_riga][i];
	}
	return massimo;
}

void scambia_righe(int r1, int r2){
	int i, temp=0;
	
	for(i=0; i < COLS; i++){
	   temp = M[r1][i];
	   M[r1][i] = M[r2][i];
	   M[r2][i] = temp;	
	}
}
int main() {
	int n_riga = 0;
	//leggi();
	leggi2();
	scrivi();
	printf("Elemento piu' grande della matrice: %d\n", trova_massimo());

	do {
		printf("Su quale riga vuoi sapere il massimo? ");
		scanf("%d", &n_riga);
	} while (!(n_riga >= 0 && n_riga < ROWS));
	printf("Elemento piu' grande della riga %d: %d\n", n_riga, trova_massimo_riga(n_riga));
	scambia_righe(1,2);
	scrivi();
	return 0;
}
