Stránka 1 z 1

C - naplnění pole

Napsal: stř 7. lis 2012, 17:58
od Ilhvm
Zdravím,

mám takový menší problém s naplněním pole v C. Mám naplnit pole od dolního po horní index (které nejspíše zadá uživatel) náhodnými čísly typu float. Cyklus jsem sestavila nějak takto:

for(i = dolni; dolni<=horni; i++){
a = rand() % 999;
b = rand() % 999;
pp = (float)a/b;
printf("%0.2f ", pp);
}

Když spustím program, hlásí mi to u řádku pp = (float)a/b; varování Unhandled exception at 0x00413798 in Modul1.exe: 0xC0000005: Access violation writing location 0xcccccccc. Myslím si, že to bude tím, že pole nemá určenou délku. Pokud zadám třeba dolní 5 a horní 7, tak 0-4 není zadán 8+ taky ne, a tak metoda neví, co tam přiřadit, ale nejsem si tím jistá.

Byla bych ráda za jakoukoliv radu.
Děkuji :)

Re: C - naplnění pole

Napsal: stř 7. lis 2012, 18:31
od OndraSter
A zbytek kódu? (do

Re: C - naplnění pole

Napsal: stř 7. lis 2012, 18:38
od Ilhvm

Kód: Vybrat vše

void NaplnPole(float pp[],int dolni, int horni){
	int i, a, b;

	printf("\nZadej dolni index: ");
	scanf("%d", &dolni);
	printf("\nZadej horni index: ");
	scanf("%d", &horni);

	for(i = dolni; dolni<=horni-1; i++){
	a = rand() % 999;
        b = rand() % 999;
        pp[i] = (float)a/b;
        printf("%0.2f  ", pp[i]);
	}
}
V main pak metodu testuji:

Kód: Vybrat vše

int _tmain(int argc, _TCHAR* argv[])
{
	int b, c;
	float *pp;

	NaplnPole(pp, b, c);

	system("PAUSE");
	return 0;
}

Re: C - naplnění pole

Napsal: stř 7. lis 2012, 20:17
od OndraSter
A kde alokuješ místo v paměti pro ten pp?