Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | 42 |
Caute, pokusal som sa naplnit pole nahodnymi cislami, pri kompilacii mi ukaze, ze prebehla uspesne, ale ked to spustim, tak naskoci iba cierna obrazovka a nic sa nedeje, pritom som dal pole vypisat. Skuste najst chybu.
Kód: uses crt; var a:array[1..10] of integer; i,s:integer; nebolo: boolean; begin clrscr; randomize;
i:=1; a[i]:= random(21) + 11;
for i:=2 to 10 do begin
repeat a[i] := random(21) + 11;
nebolo:=true; for s:=1 to 10 do begin if a[s] = a[i] then nebolo:=false; end; until nebolo=true;
end;
for i:=1 to 10 do write(a[i]);
readln; end.
|
|
Registrovaný: 11.01.09 Prihlásený: 23.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Máš zle riešené nastavenie premennej "nebolo" a program sa do nekonečna opakuje.
Kód: for i:=2 to 10 do {* i=2 začína sa porovnávať druhý prvok poľa *}
...
for s:=1 to 10 do begin if a[s] = a[i] then nebolo:=false;
{* pri prvom prejdení slučky sa nestane nič nekalé, pri druhom prejdení sa bude s=i (s=2) a teda aj a[s]=a[i] a potom "nebolo" bude false. Nikde ďalej sa potom neprepíše na true, takže vnikne nekonečná slučka *}
Riešenie ti nenapíšem, pretože jednak neviem, čo to má robiť a ďalej si myslím, že celý algoritmus je troška zvláštny. Skús popísať svoj problém.
|
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | 42 |
ten algoritmus porovnava hodnoty, ci sa v poli nenachadza rovnake cislo...preco by mala vzniknut nekonecna slucka, ved tam je cyklus repeat..until...a ked sa mi do danej priehradky pola vygeneruje taka hodnota, ktora sa v inej priehradke pola nenachadza, tak prem. nebolo bude nastavena na true, a cyklus tympadom konci.
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 | 3 |
Skus zmenit riadok
Kód: a[i] := random(21) + 11; na Kód: a[i] := random(1000) + 11;
(alebo tam daj lubovolnu vacsiu hodnotu).
Znie to sice dost nepravdepodobne, ale mozno sa v nejakom kroku generuje stale taka hodnota, ktora sa uz v poli nachadza(vygeneruje sa teda potom nova hodnota, ta tam je ale znova atd.) Generoval si tie cisla totiz z dost maleho intervalu (<11, 31>). Nemam teraz bohuzial kompilator, takze to skusit nemozem. Ostatne vyzera byt v poriadku...
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 11.01.09 Prihlásený: 23.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Skús si ten program odkrokovať, keď ti robí problém prejsť ho očami a sleduj premennú i a s, keď mi neveríš ...
Rozšírenie poľa ti nepomôže.
Naposledy upravil Fico dňa 14.08.2009 20:40, celkovo upravené 1
|
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | 42 |
ked som to zmenil na 1000, to tiez nepomohlo. random(21) + 11 neznamena ze sa generuju hodnoty z int. <11, 20> ? Ak to tak je, tak to vychadza na 10 nahodnych hodnot, preto som dal aj 10 prvkove pole.
|
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | 42 |
fico: nie zeby som ti neveril, ale nevidel som tu chybu, fakt som ju nemohol najst, konecne to uz vidim, dost hlupa chyba
a este sa chcem spytat, ze ked som mal random(21) + 11, tak z akeho int. to generuje hodnoty, z <11, 20>, alebo ako sa to berie ?
|
|
Registrovaný: 11.01.09 Prihlásený: 23.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
random(21) -- <0, 20>
random(21) + 11 -- <11, 31>
Vysvetlenie: Predstav si, že sa ti v prvom príklade vygeneruje najmenšie číslo 0. Následne k nemu pripočítaš jedenásť, čiže výsledok je 11. Potom ak sa ti vygeneruje najväčšie číslo 20 a k nemu znova prirátaš jedenásť, dostaneš 31.
(Ak chceš generovať číslo z nejakého intervalu, napríklad z <11, 20> , do funkcie random daj počet prvkov v intevale -> random(10) a pripočítaj prvý prvok množiny -> random(10) + 11 .
Naposledy upravil Fico dňa 15.08.2009 9:50, celkovo upravené 2
|
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | 42 | |
Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| [ Choď na stránku: 1, 2 ] v Assembler, C, C++, Pascal, Java | 31 | 3560 | 31.01.2009 11:24 neutronmind | | v Assembler, C, C++, Pascal, Java | 1 | 377 | 06.02.2011 17:06 juho | | v Assembler, C, C++, Pascal, Java | 0 | 429 | 19.12.2014 13:18 Styracoz | | v Assembler, C, C++, Pascal, Java | 10 | 1557 | 18.11.2006 10:07 audiotrack | | v JavaScript, VBScript, Ajax | 5 | 615 | 20.06.2009 15:38 Snacker | | v HTML, XHTML, XML, CSS | 2 | 553 | 13.09.2012 15:16 janosihelsky | | [ Choď na stránku: 1, 2 ] v Pevné disky a radiče | 54 | 6509 | 10.01.2007 20:10 ertin | | v Delphi, Visual Basic | 2 | 788 | 22.01.2013 22:50 Gregi555 | | v PHP, ASP | 3 | 603 | 07.12.2010 16:41 venom2 | | v Pevné disky a radiče | 23 | 2457 | 09.07.2008 1:15 Pegas099 | | v JavaScript, VBScript, Ajax | 2 | 312 | 05.02.2013 20:32 Ďuri | | v Ostatné | 3 | 321 | 16.09.2014 14:47 logarytmus | | v PHP, ASP | 3 | 452 | 28.09.2011 22:56 Ando | | v Assembler, C, C++, Pascal, Java | 2 | 679 | 15.11.2012 21:14 Denco1 | | v Redakčné systémy | 4 | 814 | 04.01.2011 12:22 prohibit | | v Assembler, C, C++, Pascal, Java | 1 | 368 | 11.07.2010 11:37 dEVIANT |
|