#include <stdio.h> #include <stdlib.h> #define MAX 100 void leggiMatrice(int mat[MAX][MAX], int r, int c); void stampaMatrice(int mat[MAX][MAX], int r, int c); void ordinaVettore(int vet[MAX],int vetMin[MAX], int r); void scambiarighe(int mat[MAX][MAX], int c, int indiceRiga1, int indiceRiga2); void checkRigheEInsert(int mat[MAX][MAX],int c, int r); int main() { int mat[MAX][MAX]; int vetMin[MAX]; int primaColonna[MAX]; int r=0; int c=0; printf("Inserisci, per piacere, il numero di righe della matrice?\n"); scanf("%d",&r); printf("Inserisci, per piacere, il numero di colonne della matrice?\n"); scanf("%d",&c); printf("Inserisci, per piacere, la matrice?\n"); leggiMatrice(mat, r, c); printf("La matrice inserita �:\n"); stampaMatrice(mat, r, c); for(int i=0; i<r; i++) { primaColonna[i]=mat[i][0]; } ordinaVettore(primaColonna,vetMin,r); for(int i=0; i<r; i++) { scambiarighe(mat,c,vetMin[i],i); } printf("La matrice ordinata �:\n"); stampaMatrice(mat, r, c); checkRigheEInsert(mat,c, r); } void leggiMatrice(int mat[MAX][MAX], int r, int c) { for(int i=0; i<r; i++) { for(int j=0; j<c; j++) { printf("Inserisci l'elemento di posto [%d][%d]:\n",i+1,j+1); scanf("%d",&mat[i][j]); } } } void stampaMatrice(int mat[MAX][MAX], int r, int c) { for(int i=0; i<r; i++) { for(int j=0; j<c; j++) { printf("%d",mat[i][j]); } printf("\n"); } } void ordinaVettore(int vet[MAX], int vetMin[MAX], int r){ int min,temp =0; for(int i=0; i<r; i++) { min = i; for(int j=i+1; j<r; j++) { if(vet[min]>vet[j]) { min = j; } } vetMin[i]=min; temp=vet[min]; vet[min] = vet[i]; vet[i] = temp; } } void scambiarighe(int mat[MAX][MAX], int c, int indiceRiga1, int indiceRiga2){ int temp = 0; for(int i =0; i< c; i++) { temp = mat[indiceRiga1][i]; mat[indiceRiga1][i] = mat[indiceRiga2][i]; mat[indiceRiga2][i] = temp; } } void checkRigheEInsert(int mat[MAX][MAX], int c, int r) { int mat2[MAX][MAX]; for(int l=0; l<r; l++) { for(int m=0; m<c; m++) { mat2[l][m]=mat[l][m]; } } int t = r; stampaMatrice(mat2, t, c); int Equal = 1; for(int i=0; i<r-1; i++) { Equal=1; for(int j=0; j<c; j++) { if(mat[i][j]!=mat[i+1][j]) { NotEqual=0; } } if(NotEqual == 1) { t++; for(int k =i; k<t; k++) { for( int y=0; y<c; y++) { if(k==t-r+i) { mat2[k][y] = 0; } else if (k>t-r+i) { mat2[k][y] = mat[k-(t-r)][y]; } } } } } printf("\n"); stampaMatrice(mat2, t, c); }