Salve a tutti, sono nuovo del forum e vorrei fare i complimenti a tutti perchè è fatto benissimo
Vorrei chiedervi un aiuto nella compilazione di questo programma. Allora dovrei fare questo:
realizzare un programma che, mediante opportuni sottoprogrammi, legga da tastiera una matrice di
interi con segno di dimensioni scelte dall'utente, restituendo la somma degli elementi della prima e
dell'ultima riga e la differenza tra la prima colonna e l'ultima, la stampi e, qualora la somma tra la
somma e la differenza sia diversa da 0, sposti gli elementi della stessa in posizione tale che la
matrice risulti ruotata di 90 gradi in senso orario, e la stampi.
Io ho scritto questo codice:
cosi facendo il programam funziona a metà cioè, riesce a fare tutti i primi punti ma quando la somma della differenza e somma e diversa da zero e dovrebbe ruotare di 90 gradi escono fuori valori strani.codice:#include <iostream> using namespace std; int lmatrix(int signed *m,int r,int c); int secmatrix(int signed *m,int r,int c,int signed *m2,int r2,int c2); int main() { int r;int c; cout<<"Inserisci numero di righe"<<endl; cin>>r; cout<<"Inserisci numero di colonne"<<endl; cin>>c; int signed m[r][c]; int res=lmatrix(&m[0][0],r,c); if(res!=0) { int r2=r; int c2=c; int signed m2[r2][c2]; secmatrix(&m[0][0],r,c,&m2[0][0],r2,c2); }else { cout<<"La somma è zero"<<endl; } return 0; } int lmatrix(int signed *m,int r,int c) { for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { cout<<"Inserisci elementi della matrice "<<endl; cin>>*(m+i*c+j); }cout<<endl; } for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { cout<<*(m+i*c+j); }cout<<endl; } int somma=0;int differenza=0; for(int k=0;k<r;k++) { somma+=*(m+0*c+k)+*(m+(r-1)*c+k); }for(int z=0;z<c;z++) { differenza-=*(m+z*c+0)-*(m+z*c+(c-1)); } cout<<"La somma è "<<somma<<endl; cout<<"La differenza è "<<differenza<<endl; int res=somma+differenza; return res; } int secmatrix(int signed *m,int r,int c,int signed *m2,int r2,int c2) { int temp1;int temp2;int temp3;int temp4; for(int k=0;k<c;k++) { temp1=*(m+0*c+k); //prima riga temp2=*(m+k*c+(c-1)); //ultima colonna temp3=*(m+(r-1)*c+k); //ultima riga temp4=*(m+(r-1)*c+k); //ultima riga *(m+0*c+k)=*(m+k*c+0); *(m+k*c+(c-1))=temp1; *(m+(r-1)*c+k)=temp2; *(m+k*c+0)=temp1; }for(int i=0;i<r2;i++) { for(int j=0;j<c2;j++) { cout<<*(m2+i*c2+j); }cout<<endl; } return 0; }
Vorrei chiedervi qualcuno può darmi una mano per capire dove sta l'errore???grazie a tutti in anticipo per la risposta.


Rispondi quotando