program pozyczka; uses crt; type TOsoba = record // rekord, w ktorym przechowywane sa dane osoby imie: string; // tu jest jego imie nazwisko: string; // tu nazwisko pozyczka: integer; // tu pozyczka rata: integer; // tu ile jedna rata zaplacil: integer; // no a tu ile rat juz splacil end; var Baza: array[0..250] of TOsoba; // tablica tych rekordow menu: integer; // to co wpisal w menu O, L: integer; // O - biezacy wpis, L - liczba wpisow procedure Wyswietl; begin if (L < 0) then Writeln('Nie ma zadnego wpisu.') else begin Write('Imie: '); Writeln(Baza[O].imie); Write('Nazwisko: '); Writeln(Baza[O].nazwisko); Write('Pozyczka: '); Writeln(Baza[O].pozyczka); Write('Splacil '); Write(Baza[O].zaplacil); Write(' rat o wysokosci '); Write(Baza[O].rata); Writeln(' zl.'); Write('Razem zaplacil juz '); Write(Baza[O].rata * Baza[O].zaplacil); Writeln(' zl.'); Write('Pozostalo do zaplacenia: '); Write(Baza[O].pozyczka - Baza[O].rata * Baza[O].zaplacil); Write(' zl.'); Writeln; end; end; procedure NowyWpis; var pierwszy: boolean; // czy pierwszy raz uzytkownik wpisuje ile ma rata i pozyczka bo moze wpisac wieksza rate niz pozyczke i wtedy mu pisze, ze rata nie moze byc wieksza niz pozyczka begin L := L + 1; Write('Imie: '); Readln(Baza[L].imie); Write('Nazwisko: '); Readln(Baza[L].nazwisko); pierwszy := true; Repeat if not pierwszy then Writeln('Rata nie powinna byc wieksza niz kredyt. Wpisz jeszcze raz.'); Write('Pozyczka: '); Readln(Baza[L].pozyczka); Write('Rata: '); Readln(Baza[L].rata); pierwszy := false; Until Baza[L].rata <= Baza[L].pozyczka; Baza[L].zaplacil := 0; end; procedure Poprzedni; begin if (O > 0) then begin O := O - 1; end else begin Writeln('Nie ma poprzedniego :)'); Readln; end; end; procedure Nastepny; begin if (O < L) then begin O := O + 1; end else begin Writeln('Nie ma nastepnego :)'); Readln; end; end; procedure UsunBiezacy; var i: integer; // zmienna steruajaca w petli for begin L := L - 1; for i := O to L do Baza[i] := Baza[i + 1]; end; procedure SplacRate; var Reszta: integer; // jak zbiegnie jakas reszta z raty, to ta zmienna sie przydaje begin Baza[O].zaplacil := Baza[O].zaplacil + 1; if (Baza[O].pozyczka <= Baza[O].zaplacil * Baza[O].rata) then begin UsunBiezacy; Reszta := Baza[O].zaplacil * Baza[O].rata - Baza[O].pozyczka; Write('Wszystkie raty zostaly splacone.'); if not (Reszta = 0) then begin Write(' Z ostatniej raty zbieglo '); Write(Reszta); Write(' zl.'); end; Writeln; end else Writeln('Rata zostala splacona.'); Readln; end; procedure Zapisz; var Plik: text; // plik Sciezka: string; // sciezka do pliku i: integer; // zmienna steruajca begin Write('Sciezka do pliku: '); Readln(Sciezka); Assign(Plik, Sciezka); Rewrite(Plik); Writeln(Plik, L); for i := 0 to L do begin Writeln(Plik, Baza[i].imie); Writeln(Plik, Baza[i].nazwisko); Writeln(Plik, Baza[i].pozyczka); Writeln(Plik, Baza[i].rata); Writeln(Plik, Baza[i].zaplacil); end; Close(Plik); end; procedure Wczytaj; var Plik: text; // plik Sciezka: string; // sciezka do pliku i: integer; // zmienna steruajaca begin Write('Sciezka do pliku: '); Readln(Sciezka); Assign(Plik, Sciezka); Reset(Plik); Readln(Plik, L); for i := 0 to L do begin Readln(Plik, Baza[i].imie); Readln(Plik, Baza[i].nazwisko); Readln(Plik, Baza[i].pozyczka); Readln(Plik, Baza[i].rata); Readln(Plik, Baza[i].zaplacil); end; end; begin L := -1; O := 0; Repeat ClrScr; if L > -1 then Wyswietl else Writeln('Narazie nie ma zadnych wpisow.'); Writeln; Writeln('1) Nowy wpis'); Writeln('2) Poprzedni'); Writeln('3) Nastepny'); Writeln('4) Usun biezacy'); Writeln('5) Splac rate'); Writeln('6) Zapisz do pliku'); Writeln('7) Wczytaj z pliku'); Writeln('8) Koniec'); Readln(menu); ClrScr; Case menu of 1: NowyWpis; 2: Poprzedni; 3: Nastepny; 4: UsunBiezacy; 5: SplacRate; 6: Zapisz; 7: Wczytaj; end; Until menu = 8; end.