Preštudujte si: Polia a zoznamy
| Portál: | amos.ukf.sk |
| Kurz: | Programovanie 1 |
| Kniha: | Preštudujte si: Polia a zoznamy |
| Vytlačil(a): | Hosťovský používateľ |
| Dátum: | piatok, 5 decembra 2025, 08:59 |
Opis
O tom, ako v programe využívať polia.
1. Úlohy riešené pomocou poľa
Vyriešime niekoľko úloh, v ktorých použijeme jednorozmerné pole.1.1. Úloha #1
Napíšte program, ktorý pre zadané číslo zistí počty výskytov jednotlivých cifier. Číslo načítajte z Editu, výsledok vypíšte do ListBoxu.
Riešenie
Pre každú cifru si potrebujeme pamätať počet výskytov. Ako počítadlá využijeme prvky poľa. Cifier je 10, použijeme teda pole s rozsahom 0..9 (v prvku p[0] uložíme počet núl, v prvku p[1] počet jednotiek atď.). Vstupné číslo prejdeme v cykle po cifrách, aktualizujeme príslušné počítadlá.
procedure TForm1.Button1Click(Sender: TObject);
var i, cifra: integer;
p: array [0..9] of integer;
retazec: string;
begin
for i:= 0 to 9 do p[i]:= 0; // vynulujeme pocty vyskytov
retazec:= Edit1.Text; // zadane cislo ulozime do premennej typu string
for i:=1 to length(retazec) do begin
cifra:= StrToInt(retazec[i]); // zistime, aka cifra je na aktualnej pozicii
p[cifra]:= p[cifra] + 1; // zvysime pocet jej vyskytov v poli
end;
// vypiseme vysledok
Listbox1.Clear;
for i:=0 to 9 do
Listbox1.Items.Add(inttostr(i)+ ' - ' + inttostr(p[i]));
end;1.2. Úloha #2
Napíšte program, ktorý pre zadaný text zistí počet výskytov jednotlivých malých písmen abecedy (a-z). Vstupný text načítajte z Editu, výsledok vypíšte do ListBoxu.
Riešenie
Úloha je len obmenou predchádzajúcej. Znaky a-z sú súčasťou ordinálneho typu char, môžeme ich preto použiť ako indexy poľa.
var p: array ['a'..'z'] of integer; // pocitadla znakov
retazec: string;
i, znak: char;
j: integer;
begin
for i:= 'a' to 'z' do znaky[i]:= 0; // vynulujeme pocty vyskytov
retazec:= Edit1.text;
for j:= 1 to length(retazec) do begin
znak:= retazec[j]; // zistim aky znak je na aktualnej pozicii
p[znak]:= p[znak] + 1; // zvysim pocet jeho vyskytov v poli
end;
// vypis
Listbox1.Clear;
for i:= 'a' to 'z' do
if p[i]>0 then Listbox1.Items.Add(i + ' - ' + inttostr(p[i]));
end;