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).
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.
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.