Ogni funzione ha il proprio compito anche se non mi stampa la somma ed il prodotto della matrice :/
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
/*Definizione dei prototipi*/
void Inizializzazione_Matrice(int m[][SIZE],int rc);
void Stampa_Matrice(int m[][SIZE],int rc);
int Somma_Diagonale(int m[][SIZE],int rc);
void Trasposta_Matrice (int m[][SIZE],int mt[][SIZE],int rc);
void Somma_Matrice (int m[][SIZE],int m2[][SIZE],int m3[][SIZE],int rc);
void Prodotto_Matrice(int m[][SIZE],int m2[][SIZE],int m4[][SIZE],int rc);
int main(){
int M[SIZE][SIZE],M2[SIZE][SIZE],M3[SIZE][SIZE],M4[SIZE][SIZE],MT[SIZE][SIZE],M2T[SIZE][SIZE],RC;
do{
printf("Inserire il numero di righe e colonne (essendo una matrice quadrata): ");
scanf("%d",&RC);
}while((RC>SIZE)||(RC<1));
printf("Visualizzare la prima matrice\n");
Inizializzazione_Matrice(M,RC);
Stampa_Matrice(M,RC);
printf("Visualizzare la seconda matrice\n");
Inizializzazione_Matrice(M2,RC);
Stampa_Matrice(M2,RC);
printf("Visualizzare la Traccia della prima matrice e della seconda\n");
int Traccia_M=Somma_Diagonale(M,RC);
int Traccia_M2=Somma_Diagonale(M2,RC);
printf("Visualizzare la matrice trasposta\n");
if(Traccia_M=Traccia_M2){
printf("Calcolare la trasposta delle singole matrici\n");
Trasposta_Matrice(M,MT,RC);
Stampa_Matrice(MT,RC);
Trasposta_Matrice(M2,M2T,RC);
Stampa_Matrice(M2T,RC);
} else if (Traccia_M>Traccia_M2){
printf("Calcolare la trasposta della prima matrice\n");
Trasposta_Matrice(M,MT,RC);
Stampa_Matrice(MT,RC);
} else {
printf("Calcolare la trasposta della seconda matrice\n");
Trasposta_Matrice(M2,M2T,RC);
Stampa_Matrice(M2T,RC);
}
printf("Visualizzare la somma delle due matrici\n");
Somma_Matrice(M,M2,M3,RC);
Stampa_Matrice(M3,RC);
printf("Visualizzare il prodotto delle due matrici\n");
Prodotto_Matrice(M,M2,M4,RC);
Stampa_Matrice(M4,RC);
return 0;
}
/*Definizione della funzione Inizializzazione_Matrice*/
void Inizializzazione_Matrice(int m[][SIZE],int rc){
int i,j;
for(i=0;i<rc;i++){
for(j=0;j<rc;j++){
printf("Inserire elemento di riga %d e colonna %d: ",i,j);
scanf("%d",&m[i][j]);
}
printf("\n");
}
}
/*Definizione della funzione Stampa_Matrice*/
void Stampa_Matrice(int m[][SIZE],int rc){
int i,j;
for(i=0;i<rc;i++){
for(j=0;j<rc;j++){
printf("\t%d",m[i][j]);
}
printf("\n");
}
}
/*Definizione della funzione Somma_Diagonale*/
int Somma_Diagonale(int m[][SIZE],int rc){
int i,somma=0;
for(i=0;i<rc;i++){
somma+=m[i][i];
printf("La somma della diagonale principale e': %d\n",somma);
}
printf("\n");
return somma;
}
/*Definizione della funzione Trasposta_Matrice*/
void Trasposta_Matrice(int m[][SIZE],int mt[][SIZE],int rc){
int i,j;
for(i=0;i<rc;i++){
for(j=0;j<rc;j++){
mt[j][i]=m[i][j];
}
}
}
/*Definizione della funzione Somma_Matrice*/
void Somma_Matrice(int m[][SIZE],int m2[][SIZE],int m3[][SIZE],int rc){
int i,j;
for(i=0;i<rc;i++){
m3[i][j]=0;
for(j=0;j<rc;j++){
m3[i][j]=m[i][j]+m2[i][j];
}
}
}
/*Definizione della funzione Prodotto_Matrice*/
void Prodotto_Matrice(int m[][SIZE],int m2[][SIZE],int m4[][SIZE],int rc){
int i,j;
for(i=0;i<rc;i++){
m4[i][j]=0;
for(j=0;j<rc;j++){
m4[i][j]=m[i][j]*m2[i][j];
}
}
}