Naplnenie poľa zostupne - Pascal

Programovacie jazyky, rady, poradňa...
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Naplnenie poľa zostupne - Pascal

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

No tak mám taký problém, že pri napĺňaní jednorozmerného poľa zostupnými číslami sa program zasekne, resp. sa neukončí cyklus...Táto procedúra je robená rovnakým spôsobom ako vzostupné napĺňanie, ktoré bez problémov funguje, a preto absolútne netuším, prečo sa program nedostane až ku podmienke "else i:=i+1;" - mám to odskúšané cez výpisy

Pripájam sem obidve procedúry - pre vzostupné aj zostupné napĺňanie
Takže uvítal by som každý nápad, ktorý by pomohol doriešiť toto napĺňanie.

Vzostupné napĺňanie :

Kód: Vybrať všetko

procedure postupnost;
          begin
          i:=1;
          while i<>11 do
                begin
                y[i]:=random(99)+10;
                if y[i]>(99-(11-i)) then y[i]:=random(99)+10
                                    else if y[i]<=y[i-1] then y[i]:=random(99)+10
                                                         else i:=i+1;
                end;
          writeln;
          for i:=1 to 10 do
              begin
              write(y[i],' ');
              end;
          end;
Zostupné napĺňanie :

Kód: Vybrať všetko

procedure zostupnost;
          begin
          i:=1;
          while i<>11 do
                begin
                y[i]:=random(99);
                if y[i]<(11-i) then y[i]:=random(99)
                               else if (y[i]>=y[i-1]) then y[i]:=random(99)                                                                                                else i:=i+1;
                end;
          writeln;
          for i:=1 to 10 do
              begin
              write(y[i],' ');
              end;
          end;
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Nespôsobuje to nasledujúci riadok?

Kód: Vybrať všetko

else if (y[i]>=y[i-1]) then y[i]:=random(99)
Čo presne obsahuje ten element y[0]? Ak obsahuje nulu (alebo záporné číslo), tak sa to tam zasekne.

Inak z toho kódu vôbec netuším, čo to má akože robiť, ale viem, že sa to určite dá urobiť oveľa jednoduchšie. ;)
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

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

Zamýšľal som sa aj nad tým, tak som to skúsil trošku prerobiť a už to funguje...
Mal si pravdu, na tom mieste a[0] bola 0, takže pri vzostupnom napĺňaní to fungovalo, ale pri zostupnom nie, keďže tam boli všetky vygenerované čísla od 0 väčšie.
Dík za tip chrono :wink: Máš odo mňa K+
Napísať odpoveď