/* Realizzare un programma che;
 * 1- legge le dimensione e gli elementi di una matrice
 * 2- aggiunge una colonna alla matrice il cui i-esimo elemento 
 *    รจ pari alla somma degli element della riga i-esima.
 * 3- scambia le righe della matrice in modo tale che l'ultima
 *    colonna risulti ordinata
 * 4- stampa a video la matrice risultante
 * 
 * Realizzare i diversi punti in sottoprogrammi.
 */

#include <stdio.h>

void leggimat(int mat[100][100], int* pn, int* pm);
void stampamat(int mat[100][100], int n,int m);
void aggiungic(int mat[100][100], int n, int *pm);
void ordina(int mat[100][100],int n,int m);


int main()
{
	int mat[100][100], r,c;

	leggimat(mat,&r,&c);
	stampamat(mat,r,c);
	aggiungic(mat,r,&c);
	printf("\n matrice con colonna +1\n");
	stampamat(mat,r,c);
	ordina(mat, r,c);
	stampamat(mat,r,c);
	
	}


void leggimat(int mat[100][100], int* pn, int* pm)
{
	printf("inserisci num righe\n");
	scanf("%d",pn);
	printf("inserisci num colonne\n");
	scanf("%d",pm);
	
	for(int i=0;i<*pn;i++)
	  for(int j=0;j<*pm;j++)
	     {
			 printf("inserici m[%d][%d]\n",i,j);
			 scanf("%d",&mat[i][j]);
			 }
	
	
	}
	
	
void stampamat(int mat[100][100], int n,int m)
{
	for(int i=0;i<n;i++)
	{
	  printf("\n");
	  for(int j=0;j<m;j++)
	    printf("%d\t", mat[i][j]);
	}
	
	
	}
void aggiungic(int mat[100][100], int n, int *pm)
{
	int somma;
	for( int i=0;i<n;i++)
	{
		somma=0;
		for(int j=0;j<*pm;j++)
		   somma=somma+mat[i][j];
		   
		mat[i][*pm]=somma;
		
		}
  *pm=*pm+1;		
}//aggiungi
	
	
void ordina(int mat[100][100],int n,int m)
{
	int temp;
	for(int i=0;i<n;i++)
	  for(int j=0;j<n-1;j++)
	    if(mat[j][m-1]  >mat[j+1][m-1])
	    {
			for(int k=0;k<m;k++){
				temp=mat[j][k];
				mat[j][k]=mat[j+1][k];
				mat[j+1][k]= temp;
		}
			}
	      
	
	
	
	
	}