ciągi bitoniczne

Duke
Użytkownik
Użytkownik
Posty: 267
Rejestracja: 30 kwie 2007, o 21:39
Płeć: Mężczyzna
Lokalizacja: z internetu
Podziękował: 47 razy
Pomógł: 2 razy

ciągi bitoniczne

Post autor: Duke »

Witam chodzi o zadanie z ciągiem bitonicznym, to jest 31. z tej strony
www mimuw.edu.pl/~bogklug/wpi/wp.pdf (to tylko plik ze zbiorka zadań, nic groznego, konkurencyjnego dla forum itd.)

Problem polega na tym że nie umiem ograniczyć while'a tak żeby nie wyszedł poza n, NIE moge uzyc break ani goto.
Idea programu jest taka, że po dojściu do końca instrukcji jeśli wszystko było zgodne z definicją i powinno wynosic n w przeciwnym wypadku jest zle, ale coś poknociłem.(wiem ze nie pisze procedury, ale caly program, ale tak akurat wyszlo, chodzi o sam algorytm, jak ograniczyc petle tak zeby to dzialalo prawidlowo).

Kod: Zaznacz cały

program bitonic;
const 
n=10;
var
T:array[1..n] of integer;
i:integer;
p:boolean;
begin
  for i:=1 to (n div 2) do
    T[i]:=i;
    for i:=6 to n do
    T[i]:=n-i;

//zadeklarowana przykladowa bitoniczna tablica
i:=1;


while T[i]<T[i+1] do
    i:=i+1;
while T[i]>T[i+1] do
    i:=i+1;
    if i<>n then p:=false;

writeln(p);
writeln();
for i:=1 to n do 
writeln(T[i]);
end.

Ktoś wie ocb z zadaniem 32?
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

ciągi bitoniczne

Post autor: smiechowiec »

Duke pisze:ograniczyć while'a tak żeby nie wyszedł poza n, NIE moge uzyc break ani goto.
Jeśli problemem jest tylko pętla while to możemy dodać do niej warunek (i < n), przykładowo

Kod: Zaznacz cały

//zadeklarowana przykladowa bitoniczna tablica
i:=1;
while ((i < n)  and (T[i] < T[i + 1])) do
    i := i + 1;
ODPOWIEDZ