PDA

View Full Version : [C] Come fare la trasposta di una matrice.....


PieceSpencer
21-12-2017, 18:20
ragazzi io avrei un problema...praticamente io il mio algoritmo l'ho sviluppato in questo modo:
#include <stdio.h>
#define R 100


void trasposta_matrice(int a[][R], int size_riga);

int main(void){
int a[R][R];
int i,j;
int righe;

printf("inserisci gli elementi della matrice quadrata:\n");
scanf("%d", &righe);



printf("inserisci gli elementi della matrice a :\n");

for(i=0;i<righe;i++){
for(j=0;j<righe;j++){
scanf("%d", &a[i][j]);





}

}

printf("la matrice e':\n");

for(i=0;i<righe;i++){
for(j=0;j<righe;j++)
printf("%d ", a[i][j]);
if(j%righe==0){
printf("\n");
}

}

printf ("la trasposta della matrice e':\n");
trasposta_matrice ( a, righe);

for (i=0;i<righe;i++){
for (j=0;j<righe;j++){
printf("%d ", &a[i][j]);
if(j%righe==0){
printf("\n");
}

}
}
return 0;
}



int trasposta_matrice(int a[][R], int size_riga){
int i,j,temp;

for (i=0;i<size_riga;i++){
for (j=i+1;j<size_riga;j++){
temp = a[i][j];
a[i][j]=a[j][i];
a[j][i]= temp;

}
}

}

tutto bene fino a quando non devo trovare la matrice trasposta....infatti dal prompt escono i seguenti risultati:
inserisci gli elementi delle righe:
2
inserisci gli elementi della matrice a :
2
2
2
2
la matrice e':
2 2
2 2
la trasposta della matrice e':
6447616
6447620 6448016
6448020


qualcuno mi puņ aiutare?...scusate un po il disordine ma sto da stamattina a vedere cosa ho sbagliato ma non trovo l'errore(probabilmente nella function).

PieceSpencer
21-12-2017, 19:49
nel tuo codice la stampa della trasposta č sbagliata semplicemente perchč:


printf("%d ", &a[i][j]);


non ci vuole il segno di ampersend di front a[i][j].

grazie...ma quanto sono scemo perņ hahahha.. sto da stamattina e non l'avevo visto ...