[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
NapísalOffline : 14.08.2009 18:34 | pascal - pole

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. :oops:

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.


Offline

Skúsený užívateľ
Skúsený užívateľ
pascal - pole

Registrovaný: 11.01.09
Prihlásený: 23.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 14.08.2009 19:58 | pascal - pole

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 14.08.2009 20:15 | pascal - pole

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
NapísalOffline : 14.08.2009 20:25 | pascal - pole

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…
Offline

Skúsený užívateľ
Skúsený užívateľ
pascal - pole

Registrovaný: 11.01.09
Prihlásený: 23.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 14.08.2009 20:39 | pascal - pole

Skús si ten program odkrokovať, keď ti robí problém prejsť ho očami a sleduj premennú i a s, keď mi neveríš ... :roll:

Rozšírenie poľa ti nepomôže.


Naposledy upravil Fico dňa 14.08.2009 20:40, celkovo upravené 1

Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 14.08.2009 20:40 | pascal - pole

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 14.08.2009 22:26 | pascal - pole

fico: nie zeby som ti neveril, ale nevidel som tu chybu, fakt som ju nemohol najst, konecne to uz vidim, dost hlupa chyba :oops:

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 ?


Offline

Skúsený užívateľ
Skúsený užívateľ
pascal - pole

Registrovaný: 11.01.09
Prihlásený: 23.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 15.08.2009 9:38 | pascal - pole

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

Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 15.08.2009 9:44 | pascal - pole

ok, diq...


 [ Príspevkov: 9 ] 


pascal - pole



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

pomoc pascal pole

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Assembler, C, C++, Pascal, Java

31

3560

31.01.2009 11:24

neutronmind

V tomto fóre nie sú ďalšie neprečítané témy.

pascal pole - do utriedenej postupnosti vlozte x

v Assembler, C, C++, Pascal, Java

1

377

06.02.2011 17:06

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Free Pascal a Turbo Pascal

v Assembler, C, C++, Pascal, Java

0

429

19.12.2014 13:18

Styracoz

V tomto fóre nie sú ďalšie neprečítané témy.

POLE

v Assembler, C, C++, Pascal, Java

10

1557

18.11.2006 10:07

audiotrack

V tomto fóre nie sú ďalšie neprečítané témy.

textove pole

v JavaScript, VBScript, Ajax

5

615

20.06.2009 15:38

Snacker

V tomto fóre nie sú ďalšie neprečítané témy.

Textové pole

v HTML, XHTML, XML, CSS

2

553

13.09.2012 15:16

janosihelsky

V tomto fóre nie sú ďalšie neprečítané témy.

RAID pole

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Pevné disky a radiče

54

6509

10.01.2007 20:10

ertin

V tomto fóre nie sú ďalšie neprečítané témy.

Dvojrozmerne pole

v Delphi, Visual Basic

2

788

22.01.2013 22:50

Gregi555

V tomto fóre nie sú ďalšie neprečítané témy.

Viacrozmerne pole

v PHP, ASP

3

603

07.12.2010 16:41

venom2

V tomto fóre nie sú ďalšie neprečítané témy.

raid pole

v Pevné disky a radiče

23

2457

09.07.2008 1:15

Pegas099

V tomto fóre nie sú ďalšie neprečítané témy.

Schovaj pole

v JavaScript, VBScript, Ajax

2

312

05.02.2013 20:32

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

elmag. pole

v Ostatné

3

321

16.09.2014 14:47

logarytmus

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicke pole..

v PHP, ASP

3

452

28.09.2011 22:56

Ando

V tomto fóre nie sú ďalšie neprečítané témy.

Pole stringov

v Assembler, C, C++, Pascal, Java

2

679

15.11.2012 21:14

Denco1

V tomto fóre nie sú ďalšie neprečítané témy.

textove pole

v Redakčné systémy

4

814

04.01.2011 12:22

prohibit

V tomto fóre nie sú ďalšie neprečítané témy.

C# pole matíc

v Assembler, C, C++, Pascal, Java

1

368

11.07.2010 11:37

dEVIANT



© 2005 - 2024 PCforum, edited by JanoF