Salve, premetto che sono alle primissime armi con la programmazione, quindi in modo da imparare qualcosa vorrei chiedervi perché questo programma mi da segmentation fault
dunque, io devo creare, dato un array riempito da imput con 0 o 1, una matrice i cui elementi sono la moltiplicazione di ogni elemento dell'array per tutti gli elementi dello stesso. Comunque a parte questo, cancellando pezzi e spostando il printf all'interno della funzione ho visto che fa tutto quello che deve, ma se come nel codice sopra citato voglio passare la matrice al main e dopo scorrerla con il printf ottengo segmentation fault.codice:#include <stdio.h> #include <stdlib.h> int prodottoScalare(int*,int,); int main() { int i=0,t=0,j,N=0,*arr,**matrix; do {scanf("%d",&t); if (t==0||t==1) {arr[i]=t;i++;N+=1;}} while(t!=-1); //inserisco i valori dell'array che devono essere o 0 o 1, -1 interrompe l'inserimento. **matrix=prodottoScalare(arr,N,); //passo la matrice creata for(i=0;i<N;i++) {for(j=0;j<N;j++) {printf("%d ",matrix[i][j]);} printf("\n");} //scorro la matrice per stamparla riga per riga return 0; } int prodottoScalare(int *arrx,int M) { int **matrixx,i,j; matrixx=malloc(M*sizeof(int*)); for(i=0;i<M;i++) matrixx[i]=malloc(M*sizeof(int)); for(i=0;i<M;i++) for(j=0;j<M;j++) matrixx[i][j]=arrx[i]*arrx[j]; //inserisco nella matrice creata per ogni elemento il prodotto dell'array per sé stesso return **matrixx; free(matrixx); }
Lo stesso se cancello solo la chiamata di funzione. Ho cercato su internet ma niente che aiuti. Qual'è il mio errore?


Rispondi quotando
visto che nel linguaggio C i puntatori sono essenziali, ti consiglio di rivederli dall'inizio facendo esercizi di livello di difficoltà via via crescenti, e tra qualche tempo, cimentarti in quello che vorresti fare adesso
grazie dell'aiuto! 