Ciao a tutti, da poco sto studiando c++ e sto riscontrando alcuni problemi in un esercizio che richiede di fare la differenza di due matrici,cioè, questo è quello che richiede l'esercizio:
Si realizzi un programma che, mediante opportuni sottoprogrammi, legga da tastiera due matrici
quadrate di interi con segno di dimensione scelta dall'utente e un intero positivo, restituendo una
terza matrice che contenga le differenze tra gli elementi di stesso posto della prima e della trasposta
della seconda, la stampi e, qualora la differenza tra il valore massimo e il valore minimo contenuti
nella matrice differenza sia maggiore dell'intero fornito, restituisca il numero dei valori della
matrice differenza che sono maggiori della metà dell'intero fornito e li stampi.
Ho iniziato a compilare questo codice, ma arrivo ad un certo punto è mi blocco.
#include <iostream>
using namespace std;
void matrice(int* m1,int r,int c);
void matrice2(int* m2,int r2,int c2);
void stampaM (int* m1,int r,int c,int* m2,int r2,int c2);
void differenza(int* m1,int* m2,int r,int c,int r2,int c2);
int main()
{
int dim;
int dim2;
do
{cout<<"Inserisci dimensioni della prima matrice"<<endl;
cin>>dim;
if(dim<=2)
{cout<<"dimensione errata riprovare"<<endl;}
}while(dim<=2);
int m1[dim][dim];
matrice(*m1,dim,dim);
do
{cout<<"Inserisci dimensioni della seconda matrice"<<endl;
cin>>dim2;
if(dim2<=2)
{cout<<"dimensione errata riprovare"<<endl;}
}while(dim<=2);
int m2[dim2][dim2];
matrice2(*m2,dim2,dim2);
stampaM(*m1,dim,dim,*m2,dim2,dim2);
return 0;
}
void matrice(int* m1,int r,int c)
{for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
{cout<<"Inserisci elementi della prima matrice "<<r<<" "<<c<<" "<<endl;
cin>>*(m1+j*r+i);
}
}
void matrice2(int* m2,int r2,int c2)
{for(int x=0;x<c2;x++)
for(int y=0;y<r2;y++)
{cout<<"Inserisci elementi della seconda matrice "<<r2<<" "<<c2<<" "<<endl;
cin>>*(m2+x*c2+y);
}
}
void stampaM (int* m1,int r,int c,int* m2,int r2,int c2)
{for(int i=0;i<r;i++)
{for(int j=0;j<c;j++)
cout<<*(m1+j*r+i)<<" ";
cout<<endl;
}cout<<endl;
for(int x=0;x<c2;x++)
{for(int y=0;y<r2;y++)
cout<<*(m2+y*c2+x)<<" ";
cout<<endl;
}
}
mi trovo bloccato che non so come scrivere il sottoprogramma che dovrebbe fare la differenza delle due matrici. Qualche anima pia potrebbe aiutarmi a capire come procedere???grazie a tutti in anticipo