Salve a tutti... Ho svolto questo esercizio e non funziona nulla. Queste funzioni mi stanno facendo impazzire Davvero non comprendo cosa sbaglio.
/*Scrivere un programma che utilizzando le funzioni che sono fornite effettui le
seguenti operazioni:
1) Inizializzazione e stampa di una matrice (m1)
2) Inizializzazione e stampa di una matrice (m2)
3) Calcola e visualizza a video i valori delle tracce delle due matrici
4) Traspone la matrice caratterizzata dalla traccia maggiore; nel caso le
tracce delle due matrici coincidano traspone entrambe le matrici. Nel caso
una matrice sia stata trasposta, deve essere visualizzata nuovamente a video
5) Calcola (in m3) la somma delle due matrici e ne effettua la stampa
6) Calcola (in m4) il prodotto di due matrici (m1 e m2) e ne effettua la stampa*/
#include <stdio.h>
#include <stdlib.h>
#define RIG 50
#define COL 50
/*Definizione dei prototipi*/
void matrice1 (int m1[][COL],int R,int C);
void matrice2 (int m2[][COL], int R, int C);
void leggi_matrice1 (int m1[][COL],int R, int C);
void leggi_matrice2 (int m2[][COL],int R, int C);
void trasposta_matrice (int m1[][COL],int m2[][COL],int R, int C);
void matrice3 (int m1[][COL],int m2[][COL], int R, int C);
void matrice4 (int m1[][COL],int m2[][COL], int R, int C);
int main() {
int M[RIG][COL],M2[RIG][COL],M3[RIG][COL],M4[RIG][COL],M1T[RIG][COL],M2T[RIG][COL];R,C,i,j;
do{
printf("Inserire il numero di righe: ");
scanf("%d",&R);
}while((R>RIG) || (R<1));
do{
printf("Inserire il numero di colonne: ");
scanf("%d",&C);
}while((C>COL) || (C<1));
printf("Visualizzare la prima matrice\n");
void matrice1(M[RIG][COL],R,C);
printf("Visualizzare la seconda matrice\n");
void matrice2(M2[RIG][COL],R,C);
printf("Visualizzare la matrice trasposta\n");
void trasposta_matrice (int M1[RIG][COL],int M2[RIG][COL],int R, int C);
printf("Visualizzare la somma delle due matrici\n");
void matrice3(M[RIG][COL],M2[RIG][COL],R,C);
printf("Visualizzare il prodotto delle due matrici\n");
void matrice4(M[RIG][COL],M2[RIG][COL],R,C);
return 0;
}
void matrice1 (int m1[][COL],int R,int C){
int i,j;
printf("Inserire i dati nella prima matrice \n");
for(i=0;i<R;i++){
for(j=0;j<C;j++){
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d",&m1[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<R;i++){
for(j=0;j<C;j++){
printf("\t%d",m1[i][j]) ;
}
}
}
void matrice2 (int m2 [][],int R,int C){
int i,j;
printf("Inserire i dati nella seconda matrice \n");
for(i=0;i<R;i++){
for(j=0;j<C;j++){
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d",&m2[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<R;i++){
for(j=0;j<C;j++){
printf("\t%d",m2[i][j]) ;
}
}
}
void leggi_matrice1 (int m1[][COL],int R, int C){
int i,j;
for( i=0 ; i<R ; i++ ){
printf("Immettere la %d^ riga (separare ogni elemento con uno spazio): ", i+1);
for( j=0 ; j<C ; j++ ){
scanf("%d", &m1[i][j]);
}
}
}
void leggi_matrice2 (int m2[][COL],int R, int C){
int i,j;
for( i=0 ; i<R ; i++ ){
printf("Immettere la %d^ riga (separare ogni elemento con uno spazio): ", i+1);
for( j=0 ; j<C ; j++ ){
scanf("%d", &m2[i][j]);
}
}
}
void trasposta_matrice (int m1[][COL],int m2[][COL],int R, int C){
int i,j,m1t[RIG][COL],m2t[RIG][COL];
if (m1[][COL]>m2[][COL]){
printf("\nCalcoliamo la prima matrice trasposta \n");
for (i=0;i<R;i++)
for(j=0;j<C;j++) {
m1t[j][i]=m1[i][j];
}
printf("\nStampiamo i dati della matrice \n");
for (i=0;i<R;i++) {
printf("\n");
for(j=0;j<C;j++)
printf("\t%d", m1[i][j]);
}
printf("\nStampiamo i dati della matrice trasposta \n");
for (i=0;i<R;i++) {
printf("\n");
for(j=0;j<C;j++)
printf("\t%d", m1t[j][i]);
}
else printf("\nCalcoliamo la seconda matrice trasposta \n");
for (i=0;i<R;i++)
for(j=0;j<C;j++) {
m2t[j][i]=m2[i][j];
}
printf("\nStampiamo i dati della matrice \n");
for (i=0;i<R;i++) {
printf("\n");
for(j=0;j<C;j++)
printf("\t%d", m2[i][j]);
}
printf("\nStampiamo i dati della matrice trasposta \n");
for (i=0;i<R;i++) {
printf("\n");
for(j=0;j<C;j++)
printf("\t%d", m2t[j][i]);
}
}
}
void matrice3 (int m1[][COL],int m2[][COL],int R, int C){
int i,j,m3[RIG][COL];
printf("Somma delle due matrici\n");
for (i=0;i<R;i++) {
for (j=0;j<C;j++){
m3[i][j]=m1[i][j]+m2[i][j];
}
}
printf("\nStampiamo i dati della matrice somma\n");
for (i=0;i<R;i++) {
for(j=0;j<C;j++){
printf("\t%d", m3[i][j]);
}
printf("\n");
}
}
void matrice4 (int m1[][COL],int m2[][COL],int R,int C){
int i,j,m4[RIG][COL];
printf("Prodotto delle due matrici\n");
for (i=0;i<R;i++) {
for (j=0;j<C;j++){
m4[i][j]=m1[i][j]*m2[i][j];
}
}
printf("\nStampiamo i dati della matrice somma\n");
for (i=0;i<R;i++) {
for(j=0;j<C;j++){
printf("\t%d", m4[i][j]);
}
printf("\n");
}
}