C++ Naplnenie pola

Programovacie jazyky, rady, poradňa...
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

C++ Naplnenie pola

Príspevok od používateľa Blade.m »

Zdravim, mam mensi problem s rozdelenim pola. Mam pole s velkostou N = 100 a potrebujem ho rozdelit na 2 casti a najprv naplnit jednu a potom druhu, ale nejak mi to nejde, mam takyto cyklus:

Kód: Vybrať všetko

for(int i=zaciatok; i<N/koniec; i++)
	{
			pole[i] = rand()%DO+OD;
	}
prvy krat ked volam funkciu, tak dam zaciatok = 0, koniec = 2...cize cyklus ma ist od 0 po 50... Ked cyklus zavolam druhy krat, tak zaciatok = N/2 co je 50 a koniec = 1 = N, takze by to malo ist od 50 do 100, ale do oboch casti mi vygeneruje tie iste cisla, cize prva polovica sa rovna druhej polovici a neviem preco mi to robi...Pls nevedeli by ste mi poradit, dik :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C++ Rozdelenie pola

Príspevok od používateľa BX »

Chceš pole rozdeliť na 2 časti a ja tam vidím stále len jedno jediné pole. Čo som nepochopil?
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

Re: C++ Rozdelenie pola

Príspevok od používateľa Blade.m »

no fakt :D, uz je vela hodin...a ja tu stale hladam ako rozdelit pole...tak sa opravim, mam jedno pole a jednym vlaknom musim naplnit jednu polovicu a druhym vlaknom druhu polovicu, cize stale pracujem s jednym polom, ale nefunguje mi to :(
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C++ Naplnenie pola

Príspevok od používateľa BX »

wtf? Takto nejako to chceš?

Kód: Vybrať všetko

int i,j;
for(i = 0; i < 50; i++) dostuff();
for(j = i; j < 100; j++) doanotherstuff();
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

Re: C++ Naplnenie pola

Príspevok od používateľa Blade.m »

Vygenerujte pole 100 prvků a naplňte je náhodnými hodnotami. Napište program který naplní v jednom vlákně horní část pole a ve druhém vlákně spodní část pole.

Keď zavolám prvé vlakno:

Kód: Vybrať všetko

DWORD WINAPI vlaknoA( LPVOID )
{
cout << "Startuje vlakno A" << endl;
generuj(POLE, 0, 2); //vygenerovanie prvej polovice 
return 0;
}
tak by to malo naplnit prvu polovicu pola:

Kód: Vybrať všetko

TYP generuj(TYP pole[], int zaciatok, int koniec)
{
srand((unsigned)time(NULL));
for(int i=zaciatok; i<N/koniec; i++)
{
pole[i] = rand()%DO+OD;
}
return 0;
}
no a ked zavolam druhe vlakno, tak by sa mala naplnit druha polovica lenze do druhej polovice vlozi presne tie cisla, ktore vygenerovalo v prvej a neviem preco. Nevedel by si, co by mohlo byt s tym?
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ Naplnenie pola

Príspevok od používateľa johny3212 »

Tak si to odkrokuj cez Debuger a uvidis ako ti to plni a ako vstupny parameter pre generuj() pouzi pointer, neviem odkial mas toto TYP pole[] (generuj(TYP * pole, int zaciatok, int koniec)).
Nieco tam zle zadavas asi, lebo ta uloha je primitivna, dude to daka hlupa chyba. Ten cyklus je tiez hlupo postaveny a pouziva daku premennu N, ktora je extern, co je tiez skarede, normalne daj

Kód: Vybrať všetko

for(int i=zaciatok; i<koniec; i++)
a index zaciatok a koniec nastav na pozadovanu hodnotu zvonka. generuj(pole, 0, N/2);
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

Re: C++ Naplnenie pola

Príspevok od používateľa Blade.m »

jj to su take chybicky krasy...odkrokoval som si to a ide to pekne od 0 do 50 a potom od 50 do 100, tak ako ma cize nechapem preco prva polovica sa rovna tej druhej
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: C++ Naplnenie pola

Príspevok od používateľa jorg22 »

teoreticky to moze byt aj tym

Kód: Vybrať všetko

srand((unsigned)time(NULL));
ze sa pole naplni skor ako za sekundu a tym sa time() nezmeni.

Skus pripocitavat nejaku globalnu hodnotu k time() ktoru budes inkrementovat po kazdom zavolani funkcie generuj.
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

Re: C++ Naplnenie pola

Príspevok od používateľa Blade.m »

Jorg22 dik, bolo to tym :)
Napísať odpoveď