Free Pascal- wpisanie liczb do tablicy


(alabama1) #1

Cześć. Obecnie zajmuję się zadaniem, w którym mam stworzyć program, który wpisuje do tablicy n-elementowej liczby w następujący sposób: 1, n, 2, n-1, 3, n-2…

Prawdę mówiąc, nie mam kompletnie pomysłu na ten program. Kombinuję, ale nie wiem. Wydaje mi się, że trzeba oddzielnie wpisywać liczby do indeksów parzystych, a oddzielnie do indeksów nieparzystych, ale jak, to nie wiem.


([alex]) #2
for i:=1 to n do if (i and 1)<>0 then tb[i]:=(i+1)shr(1) else tb[i]:=n-((i-2)shr(1));

(alabama1) #3

Ohoho… A możesz teraz w paru słowach to skomentować, wytłumaczyć?


(Rolek0) #4

Tak [alex], bardzo mu pomogłeś :wink:

Trochę bardziej zrozumiały kod:

for i := 1 to n do

	if i mod 2 <> 0 then

		t[i] := i div 2 + 1

	else

		t[i] := n + 1 - i div 2;

Opcjonalnie możesz też dwiema pętlami najpierw nieparzyste a potem parzyste indeksy.


(Pablo_Wawa) #5

Można też inaczej:

poczatek:=1;

koniec:=n;

index:=1;

kierunek:=1;

while poczatek<=koniec do

begin

  if kierunek=1 then

  begin

    t[index]:=poczatek;

    poczatek:=poczatek+1;

  end

  else

  begin

    t[index]:=koniec;

    koniec:=koniec-1;

  end;

  index=index+1;

  kierunek=1-kierunek;

end;

Według mnie znacznie czytelniej, co nie znaczy, że optymalny algorytm.


(alabama1) #6

Dzięki wam, Rolek0 i Pablo_Wawa, ale coś chyba na to jestem za słaby, nie mogę tego pokojarzyć. :frowning: