voglio eseguire la matrice trasposta con un unico ciclo for come nell'esempio sottostante...
quando vado a stampare il primo indirizzamento per righe riesce a stamparmi l'indice i 0,1,2,3 ecc.. mentre il secondo indirizzamento per colonne mi stampa l'indice sempre 0,0,0,0 ecc...sapete il perchè?![]()
for(i=0;i<n;i++)
{
*(mat+0*n+i)=i;
*(mat+i*n+0)=i; <-------non funzionante
}
codice:#include <stdio.h> #include <stdlib.h> void costr_mat(int mat[9][9],int n); void visualizza(int mat[9][9],int n); void vedi_nodo(int mat[9][9],int n); int main() { int *mat; int n; int i,j; int scelta; printf("Inserisci la grandezza della tabella (MAX 8) = "); scanf("%d",&n); n++; mat=calloc(n,sizeof(int)); /* Metto i nodi */ for(i=0;i<n;i++) { *(mat+0*n+i)=i; *(mat+i*n+0)=i; } costr_mat(mat,n); printf("\nLa Prima riga e la Prima colonna visualizzano i nodi creati, nodo 0 non esiste\n\n"); do { printf("\n\n"); printf("0 - Esci\n"); printf("1 - Vedi info nodo\n"); printf("2 - Visualizza MATRICE\n"); scanf("%d",&scelta); printf("\n\n"); switch(scelta) { case 0: printf("Grazie per aver usufruito del nostro programma\n\n"); break; case 1: vedi_nodo(mat,n); break; case 2: visualizza(mat,n); break; } }while(scelta != 0); system("pause"); } void costr_mat(int mat[9][9],int n) { int i,j; printf("Inserisci gli elementi, 1 e 0\n"); for(i=1;i<n;i++) { for(j=i;j<n;j++) /* Inserisco dalla diagonale in su (triangolo superiore) */ { printf("mat[%d][%d] = ",i,j); scanf("%d",&mat[i][j]); } } } void vedi_nodo(int mat[9][9],int n) { int i,j,cont=0; printf("\nQuale nodo preferisci visualizzare le informazioni? "); scanf("%d",&i); /* Controllo sulla riga */ for(j=1;j<n;j++) if(mat[i][j] == 1) /* Conto quante connessioni ci sono */ cont++; printf("\nIl nodo e' collegato con %d nodi\n\n",cont); } void visualizza(int mat[9][9],int n) { int i,j; printf("\nEcco la matrice\n"); for(i=0;i<n;i++) { printf("\n"); for(j=0;j<n;j++) printf("%d ",mat[i][j]); } }

Rispondi quotando