( Jason | 2011. 04. 23., szo – 07:02 )

Ha ezt a kérdést tegnap 18h előtt teszed fel, tudtam volna konkrétumokkal segíteni :D

Dinamikus tömb foglalása esetén csak TE tudod mekkora a tömb (illetve ha kiolvasod a foglalás méretét a heap allokátor táblázatából:)
Van egy ökölszabály jellegű megoldás, hogy ha növelni kell a tömb méretét, mindig duplázol. Persze tárolod a tömb méretét és az utolsó elem indexét is. Ekkor csak log n lesz a foglalások időigénye.

Amúgymeg:


double* array = calloc(1, sizeof(double));
double d = 3.1415;
int size=0, last=0;

while (yourdoublereader(&d))
{
    if(last == size-1) /* elobb utolso helyre irtunk */
    {
        size *= 2;
        array = realloc(array, size*sizeof(double));
    }
    last++;
    array[last] = d;
}

last++;
array = realloc(array, last*sizeof(double));
/* Innentol a tomb akkora, amekkoranak kene lennie */

Try, modify.
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.