Ciao. Volevo chiedere un aiuto su un problema con un programma.
Volevo scrivere un programma che caricasse una matrice di double di dimensione nxn.
Siccome n è variabile, ho dovuto allocare dinamicamente nxn double con la funzione malloc.
Ho voluto usare un puntatore uni-dimensionale, quindi la matrice A la considero come un vettore riga nxn, e l'elemento A[i][j] quindi lo considero come A[n*i+j].
A quanto pare il programma mi fa un errore di segmentazione, ma non riesco a capire dove sia l'errore. Ve lo copio qua sotto:
//===============PROGRAMMA===============
#include<stdio.h>
#include<stdlib.h>
//================PROTOTIPI================
void carica_matrice(double *,int);
//==============DATI GLOBALI================
int n; //Per la dimensione della matrice
double *A_p; //Per puntare la matrice
//===============DEFINIZIONI================
int main(void)
{
printf("Quante righe e colonne?\n");
scanf("%d",&n);
A_p=(double *) malloc (sizeof(double[n*n]));//Per allocare la memoria per la matrice
carica_matrice(A_p,n);
system("pause");
return(0);
}
void carica_matrice(double *a,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;i++)
{
printf("\n elemento [%d][%d]= ",i+1,j+1);
scanf("%lf",&a[n*i+j]);
printf(" i=%d, j=%d",i,j);//??Perchè incrementa i indefinitamente e lascia j=0??
}
}
return;
}
/* Grazie a chi mi aiuta! */