PDA

Visualizza la versione completa : [C] subscripted value is neither array nor pointer


Metallica
04-05-2004, 16:03
Ho questo main ma quando lo compilo mi dice:
on line 24: subscripted value is neither array nor pointer
La linea 24 sarebbe quella evidenziata in rosso....

grazie a chi mi aiuterà


int main()
{
int *m;
int i, j, n;

printf("Inserisci la dimensione n: ");
scanf("%d", &n);

if (!(m = (int *)malloc(n*n*sizeof(int))))
abort();

for(i=0; i<n; ++i)
for(j=0; j<n; ++j)
{
printf("Inserisci il valore dell'elemento (%d,%d): ", i+1, j+1);
scanf("%d", &m[i][j]);
}
printf("Determinante = %d \n", det(m,n,0));
return 0;
}

kentaromiura
04-05-2004, 16:04
Originariamente inviato da Metallica
Ho questo main ma quando lo compilo mi dice:
on line 24: subscripted value is neither array nor pointer
La linea 24 sarebbe quella evidenziata in rosso....

grazie a chi mi aiuterà


int main()
{
int **m;
int i, j, n;

printf("Inserisci la dimensione n: ");
scanf("%d", &n);

if (!(m = (int *)malloc(n*n*sizeof(int))))
abort();

for(i=0; i<n; ++i)
for(j=0; j<n; ++j)
{
printf("Inserisci il valore dell'elemento (%d,%d): ", i+1, j+1);
scanf("%d", &m[i][j]);
}
printf("Determinante = %d \n", det(m,n,0));
return 0;
}

Metallica
04-05-2004, 16:15
grazie

kentaromiura
04-05-2004, 16:18
penso che l'errore sia
(int **)malloc
se ritorna una matrice..
non ho tempo di controllare adesso scappo..

derekderek
04-05-2004, 21:53
Hai dichiariato la tua variabile mat kome un semplice puntatore a int.
L'allocazione di memoria è troppo banale, perchè così nn allochi spazio per una matrice ma solo un vettore n*n. :D


Cmq questo ragionamento è valido se programmi sotto i linguaggi assembler, questo perchè le matrici in memoria non sono altro ke locazioni di memoria adiacenti e per spostarsi da un a locazione all'altra bisogna sommare 4(x processori a 32 bit) al tuo indice di scorrimento matrice e basta.
:metallica

Loading