Witam mam pewne problemu które pewnie dla niektórych okażą się banalne a więc najpierw treść zadania:
Zdefiniować rekord KIEROWCA o następujących polach:
Dane(imię, nazwisko, adres)
samochód(marka, nr rejestracyjny)
kursy(tablica zawierająca liczby określające ilość przejechanych kilometrów)
Utwórz bazę danych przechowującą informację o zadanej liczbie kierowców. Napisz procedury wczytywania i wyświetlania danych zawartych w tym rekordzie (wykorzystaj instrukcję WITH). Dodaj funkcję obliczającą wynagrodzenie dla kierowcy, przyjmując stawkę 0.80 zł/km. Dodaj funkcję obliczającą ilość kilometrów przejechanych przez wszystkich kierowców z bazy.
I takie rekord mamy przekształcić w taki o to sposób
-Zamiast rekordu dac klase
-Zamiast tablic statycznych dac dynamicza
-Zapis do pliku
-Odczyt z pliku
-Dodac konstruktor
Część większą juz zrobiłem ale mam problem z funkcją liczącą ilośc wszystkich km przejechanych przez kierowców do zapisu/odczytu jeszcze nie doszedłem
Zamieszczam mój kod jakby był ktoś miły i rzucił na to okiem i powiedzial co gdzie jak było by fajnie
program Projekt;
{$APPTYPE CONSOLE}
uses
SysUtils;
type Tsamochod=record
marka:string[20];
nr_rej:byte;
end;
type TDane=record
imie:string[20];
nazwisko:string[40];
adres:string[50];
end;
type Tkursy_tab=array of integer;
type Tkierowca=class
private
Dane_wlasciciela:TDane;
Samochod:Tsamochod;
Kursy:Tkursy_tab;
ilosc_kurs:integer;
public
procedure wczytaj();
procedure wyswietl();
function oblicz():real;
procedure sumak(var A:TKierowca);
end;
type TKierowcy=array of TKierowca;
function Tkierowca.oblicz(): real;
var
i:integer; S:real; stawka:real;
const b=0.80;
begin
S:=0;
for i:=0 to ilosc_kurs-1 do
begin
S:=S+Kursy[i];
end;
stawka:=S*b;
result:=stawka;
end;
procedure Tkierowca.sumak(var A: TKierowca);
var S:real; i:integer;
begin
for i:=0 to ilosc_kier -1 do
end;
procedure Tkierowca.wczytaj;
var i:integer;
begin
writeln('Podaj imie');
readln(Dane_wlasciciela.imie);
writeln('Podaj nazwisko');
readln(Dane_wlasciciela.nazwisko);
writeln('Podaj adres');
readln(Dane_wlasciciela.adres);
writeln ('Podaj marke');
readln(Samochod.marka);
writeln('Podaj nr_rej');
readln(Samochod.nr_rej);
writeln('Podaj ilosc kursow');
readln(ilosc_kurs);
setlength(Kursy,ilosc_kurs);
for i := 0 to ilosc_kurs-1 do
begin
writeln('Podaj ilosc km');
readln(Kursy[i]);
end;
end;
procedure Tkierowca.wyswietl;
var
i:integer;
begin
writeln('Imie wlasciciela ',Dane_wlasciciela.imie);
writeln('Nazwisko wlasciciela ',Dane_wlasciciela.nazwisko);
writeln('Adres wlasciciela ',Dane_wlasciciela.adres);
writeln('Marka ', Samochod.marka);
writeln('Nr.Rej ', Samochod.nr_rej);
for i:=0 to ilosc_kurs-1 do
writeln('Ilosc Km ', Kursy[i]);
end;
var Baza:TKierowcy;
ilosc_kier:integer;
i:integer;
opcja,pom:integer;
k:real;
{ Tkierowca }
begin
writeln ('Wczytac z pliku [1] czy z klawiatury [2]');
readln(pom);
if pom=1 then
begin
end
else
begin
writeln('Podaj ilosc kierowcow');
readln(ilosc_kier);
setlength(Baza,ilosc_kier);
for i:=0 to ilosc_kier-1 do
Baza[i]:=TKierowca.Create;
for i:=0 to ilosc_kier-1 do
begin
writeln('Kierowca nr',i+1);
Baza[i].wczytaj;
end;
end;
begin
repeat
writeln('[1] - Wczytaj baze');
writeln('[2] - Wypisz');
writeln('[3] - Koniec');
writeln('[4] - zmien kierowce');
writeln('[5] - ktorego kierowce chcesz wypisac');
writeln('[6] - Oblicz wynagrodzenie');
readln(opcja);
case opcja of
1:begin
writeln ('Wczytac z pliku [1] czy z klawiatury [2]');
readln(pom);
if pom=1 then
begin
end
else
begin
writeln('Podaj ilosc kierowcow');
readln(ilosc_kier);
setlength(Baza,ilosc_kier);
for i:=0 to ilosc_kier-1 do
Baza[i]:=TKierowca.Create;
for i:=0 to ilosc_kier-1 do
begin
writeln('Kierowca nr',i+1);
Baza[i].wczytaj;
end;
end;
end;
2:begin
for i:=0 to ilosc_kier-1 do
begin
writeln('Kierowca nr',i+1);
Baza[i].wyswietl;
end;
end;
4: begin
writeln ('ktorego kierowce chcesz zmienic');
readln(pom);
writeln('kierowca nr',pom);
baza[pom-1].wczytaj;
end;
5: begin
begin
writeln ('ktorego kierowce chcesz wypisac');
readln(pom);
baza[pom-1].wyswietl;
end;
end;
6: begin
writeln ('Wynagrodzenie dla kierowcy numer?');
readln(pom);
writeln(baza[pom-1].oblicz:3:10);
end;
3:begin
writeln('KONIEC PROGRAMU :(');
end;
end;
until opcja=3;
readln;
end;
{ TODO -oUser -cConsole Main : Insert code here }
end.