Certo che il problema sparisce, ma se tu utilizzassi un vettore predefinito (cioè dichiarassi una dimensione fissa per il vettore) sarebbe inutile utilizzare una malloc con parametri (vedi sopra).
Questo è un trucchetto per poter utilizzare un vettore senza sprecare memoria e senza ricorrere all'uso di liste o alberi.
Pensa se devi utilizzare un vettore di vettori, cioè in cui ogni posizione è un vettore (che chiameremo vett_int), tu sai a priori che la dimensione massima dio vett_int è di 300 posizioni (quindi bisognerebbe scrivere nella struttura ... int vett_int[300]; ) ma ad ogni posizione (del vettore esterno) utilizzerai un numero diverso ... se tale numero fosse compreso tra 0 e 5 ci sarebbe un po' dispreco...
Ritornando al problema originale...
credo che una possibile soluzione al problema potrebbe consistere nel dichiarare un "vettore fittizio" di double:
double weight_tran[1]
e un puntatore di interi
int *items, allocando poi il numero esatto di interi (grazie a i o n).
Di conseguenza dovrebbe anche cambiare la dichiarazione della variabile tat: dovrebbe esser aggiunta la dichiarazione di spazio allocato per il vettore di double.
Vi ringrazio comunque dell'interessamento...

Rispondi quotando