10cioma jedynkami
TTablica=class
FTablica: array[1..10] of integer;
constructor Create;
procedure Pisz(liczba, index: Integer);
function Czytaj(index: Integer): Integer;
end;
constructor TTablica.Create;
var i: Integer;
begin
for i := 1 to 10 do
FTablica[i] := 1;
end;
procedure TTablica.Pisz(liczba, index: Integer);
begin
if not (index in [1..10]) then ShowMessage('poza zakresem') else
if liczba mod 2 <> 0 then ShowMessage('nieparzysa') else
FTablica[index] := liczba
end;
function TTablica.Czytaj(index: INteger):Integer;
begin
if not (index in [1..10]) then ShowMessage('poza zakresem') else
result := FTablica[index]
end
10cioma dwojkami
TTablica=class
FTablica: array['A'..'J'] of integer;
constructor Create;
procedure Pisz(liczba : integer; index: char);
function Czytaj(index: char): Integer;
end;
constructor TTablica.Create;
var i: Integer;
begin
for i := ord('A') to ord('J') do
FTablica[chr(i)] := 2;
end;
procedure TTablica.Pisz(liczba : integer; index: char);
begin
if not (index in ['A'..'J']) then ShowMessage('poza zakresem') else
if liczba mod 2 <> 1 then ShowMessage('zla liczba') else
FTablica[index] := liczba
end;
function TTablica.Czytaj(index: char):Integer;
begin
if not (index in ['A'..'J']) then ShowMessage('poza zakresem') else
result := FTablica[index]
end
TCzas=class
Private
FNr_rejsu: String;
FGodzina: Integer;
FMinuta: Integer;
Public
constructor Create(nr_rejsu: String; godzina, minuta: Integer);
procedure podaj_info_o_locie;
procedure natepna_minuta;
function minuta_doby: Integer;
end;
constructor TCzas.Create(nr_rejsu: String; godzina, minuta: Integer);
begin
if (not (godzina in [0..23])) and (not (minuta in [0..59]))
then begin ShowMessage(`Nieprawidlowe dane'); exit; end;
FNr_rejsu := nr_rejsu;
FGodzina := godzina;
FMinuta := minuta;
end;
procedure TCzas.podaj_info_o_locie;
begin
ShowMessage(Format('%s %d:%d', [FNr_rejsu, FGodzina, FMinuta]));
end;
procedure TCzas.nastepna_minuta;
begin
inc(FMinuta);
if FMinuta >= 60 then
begin
FMinuta := 0;
inc(FGodzina);
end;
if FGodzina >= 24 then
FGodzina := 0;
end;
function TCzas.minuta_doby: Integer;
begin
result := FGodzina*60+FMinuta-1
end;
TCzas=class
Private
FNr_rejsu: String;
FGodzina: Integer;
FMinuta: Integer;
Public
constructor Create(nr_rejsu: String; godzina, minuta: Integer);
procedure podaj_info_o_locie;
procedure natepna_minuta;
function minuta_doby: Integer;
end;
constructor TCzas.Create(nr_rejsu: String; godzina, minuta: Integer);
begin
if (not (godzina in [0..23])) and (not (minuta in [0..59]))
then begin ShowMessage(`Nieprawidlowe dane'); exit; end;
FNr_rejsu := nr_rejsu;
FGodzina := godzina;
FMinuta := minuta;
end;
procedure TCzas.podaj_info_o_locie;
begin
ShowMessage(Format('%s %d:%d', [FNr_rejsu, FGodzina, FMinuta]));
end;
procedure TCzas.nastepna_godzina;
begin
inc(FGodzina);
if FGodzina >= 24 then
FGodzina := 0;
end;
function TCzas.kwadrans_doby: Integer;
begin
result := FGodzina*4+(Fminuta div 4)-1 //chyba
end;
TKolejkaBezPowtorzen=class(TQueue)
public constructor Create;
procedure Pisz(liczba: Integer);
function Czytaj:Integer;
end;
constructor TKolejkaBezPowtorzen.Create;
var
i: Integer;
begin
for i := 1 to 10 do
Pisz(i);
end;
function TKolejkaBezPowtorzen.Czytaj: Integer;
begin
result := -1; // gdy nie istnieje
if Count = 0 then Exit;
result := Integer(Pop);
end;
procedure TKolejkaBezPowtorzen.Pisz(liczba: Integer);
var
p: Pointer;
i: Integer;
begin
if Count = 10 then Exit;
for i := 0 to Count-1 do
if Integer(Self.List.Items[i]) = liczba then
Exit;
New(p);
p := PChar(liczba);
Push(p);
end;
type
TStosBezPowtorzen=class(TStack)
Public
constructor Create;
procedure Pisz(liczba: Integer);
function Czytaj:Integer;
end;constructor TStosBezPowtorzen.Create;
var
i: Integer;
begin
for i := 1 to 10 do
Pisz(i);
end;
function TStosBezPowtorzen.Czytaj: Integer;
Begin
result := -1; // gdy nie istnieje
if Count = 0 then Exit;
result := Integer(Pop);
end;
procedure TStosBezPowtorzen.Pisz(liczba: Integer);
var
p: Pointer;
i: Integer;
begin
if Count = 10 then Exit;
for i := 0 to Count-1 do
if Integer(Self.List.Items[i]) = liczba then
Exit;
New(p);
p := PChar(liczba);
Push(p);
end;
TRODZINKA!
type
TPlec = (pKobieta, pMezczyzna);
TOsoba = record
imie: string;
wiek: integer;
plec: TPlec;
end;
TRodzina = class
FNazwisko: string;
FIleOsob: integer;
FOsoba: array[1..10] of TOsoba;
constructor Create(nazwisko: string);
procedure DodajOsobe(osoba: TOsoba);
function SredniaWieku: integer;
function NestorRodu: string;
end;
constructor TRodzina.Create(nazwisko: string);
begin
inherited;
FNazwisko:=nazwisko;
FIleOsob:= 0;
end;
procedure TRodzina.DodajOsobe(osoba:TOsoba);
begin
if FIleOsob <= 9 then
begin
FOsoba[FIleOsob + 1].imie:= osoba.imie;
FOsoba[FIleOsob + 1].wiek:= osoba.wiek;
FOsoba[FIleOsob + 1].plec:= osoba.plec;
FIleOsob:= FIleOsob + 1;
end
else
ShowMessage('Rodzina pełna');
end;
function TRodzina.SredniaWieku:integer;
var i: integer;
srednia: integer;
begin
srednia:= 0;
if FIleOsob = 0 then
begin
ShowMessage('Rodzina pusta');
Exit;
end;
for i:= 1 to FIleOsob do srednia:= srednia + FOsoba[i].wiek;
Result:= srednia div FIleOsob;
end;
function TRodzina.NestorRodu: string;
begin
end;