[Delphi] Wyświetl co drugą literę alfabetu

Program wyświetla kolejne litery alfabetu. Co mam wpisać, aby program wyświetlał mi co drugą literę, począwszy od A?

Przypuszczam, że należy wprowadzić nową zmienną. Jakieś sugestie?

var

znak:Char;

begin

ListBox1.Items.Clear;

for znak:='A' to 'Z' do

ListBox1.Items.Add(znak);

ListBox2.Items.Clear;

for znak:='Z' downto 'A' do

ListBox2.Items.Add(znak);

end;

Nie znam się na Delphi(ani Pascalu), ale patrząc na kod, to wystarczy dodać jakąś zmienną boolowską i co przebieg pętli zmieniać ją na przeciwną i sprawdzać na początku czy jest ustawiona na true, jeśli tak, to opuścić przebieg pętli(continue w C/C++). Można to zrobić inaczej, ale nie wiem czy da rade w Pascalu/Delphi(dodawać co przepieg do zmiennej znak dwa).

Chyba nie ma czegoś takiego w Delphi.

Jeżeli znaki to typ arytmetyczny to wystarczy w ciele pętli dać znak++ czy znak+=1.

//edit: Nie znam się na Pascalu, nie przeczytałem co to za język i tak ‘strzeliłem’…

nr47

W pierwszym poście dałem kod źródłowy. Mógłbyś napisać, w którym to dokładnie ma być miejscu?

W Delphi nie da się zrobić pętli for ze skokiem innym niż jeden, jak i w trakcie pętli nie da się zmieniać wartości zmiennej sterującej. Ale pomysł z dodatkową zmienną logiczną jest niezły, prosty i powinien działać:

var

  znak: Char;

  drugi: Boolean;

begin

  drugi := True;

  ListBox1.Items.Clear;

  for znak := 'A' to 'Z' do

  begin

    drugi := not drugi;

    if drugi then

      Continue;

    else

      ListBox.Items.Add(znak);

  end;

end;

Jednak prawdopodobnie lepszym pomysłem będzie użycie pętli while zamiast for i inkrementacja o dwa licznika pętli.

Znalazłem w miarę proste rozwiązanie:

var

znak:Char;

a:Integer;

begin

a:=0;

ListBox1.Items.Clear;

for znak:='A' to 'Z' do

begin

a:=a+1;

if not (a mod 2=0) then

ListBox1.Items.Add(znak);

end;

begin

a:=0;

ListBox2.Items.Clear;

for znak:='Z' downto 'A' do

begin

a:=a+1;

if not (a mod 2=0) then

ListBox2.Items.Add(znak);

end;

end;

end;

end.

Może i tak, ale można pokombinować. Na przykład, aby wyświetlał co trzecią literę alfabetu wystarczy wpisać następujący kod:

var

znak:Char;

a:Integer;


begin

a:=0;

ListBox1.Items.Clear;

for znak:='A' to 'Z' do

begin

a:=a+1;

if (a mod 3=1) then

ListBox1.Items.Add(znak);

end;


begin

a:=0;

ListBox2.Items.Clear;

for znak:='Z' downto 'A' do

begin

a:=a+1;

if (a mod 3=1) then

ListBox2.Items.Add(znak);

end;

end;

end;

end.