Napiszemy program wykorzystując typ wyliczeniowy dla określenia elementów. Po wpisaniu elementu będzie go zliczał i pisał komunikat, wyświetlając jednocześnie informacje o liczbie policzonych elementów tego typu. Jeżeli użytkownik wpisze błędny element, zostanie o tym poinformowany.
program cw4_09;
{ Program wspomaga przeprowadzenie inwentaryzacji }
{ magazynu części komputerowych, ilustrując }
{ zastosowanie typu wyliczeniowego. }
type
TCzesci - (monitor, klawiatura, obudowa, dysk);
TMagazyn - array [TCzesci] of Integer;
const
NazwyElementow : array [TCzesci] of String -
('monitor', 'klawiatura', 'obudowa', 'dysk');
var
Element : TCzesci;
Magazyn : TMagazyn;
Znak : Char;
begin
for Element:-monitor to dysk do Magazyn[Element] 0; repeat
Writeln ('Podaj litere oznaczajaca element: ');
Write ('M - monitor, K - klawiatura, ',
'0 - obudowa, D - dysk, spacja - koniec: ');
Readln (Znak); Znak :- Upcase(Znak); Writeln; if (Znak-'M‘) then Element :- monitor else
if (Znak-'K') then Element :- klawiatura else
if (Znak-'0') then Element :- obudowa else
if (Znak-'D') then Element :- dysk else
if (Znak<>' ') then begin
Writeln (' Podano biedny znak. Nie zaliczono elementu'); end;
if ((Znak-'M‘) or (Znak«'K') or (Znak-'0') or (Znak-'D')) then begin
Inc (Magazyn[Element]);
Writeln (' Zaliczono element: ', NazwyElementow[Element], ' (',
Magazyn[Element], ')');
end;
until (Znak - ’ ');
Writeln ('Stan magazynu:');
Writeln (’——-----------');
for Element:-monitor to dysk do
Writeln (NazwyElementow[Element]:10, ': ', Magazyn[Element]:6);
Readln; end.
Winien jestem pewne wyjaśnienie tyczące się dziwnej pętli wypisującej stan magazynu. Otóż zmienna sterująca w pętli for może być dowolnego typu porządkowego, nie tylko liczbowego. Ponieważ dokładnie potrafimy określić, jakie elementy mogą się znaleźć kolejno pomiędzy monitorem i dyskiem, program nie będzie miał kłopotów ze zinterpretowaniem. Nada zmiennej Element kolejno wartości: monitor, klawiatura, obudowa, dysk. I