┌loha Φ. 2


Nßzev ·lohy: P∙jΦka
Datum: 22.10.1997
Obtφ₧nost: Z
P°edpoklßdanΘ znalosti: podmφn∞n² p°φkaz, operßtory div, mod, cyklus while, procedury pro V/V operace


Zadßnφ
Mo₧nß, ₧e n∞kter² z Vßs se dostal do situace, kdy byl nucen si p∙jΦit penφze. O tom bude tato ·loha. NapiÜte program pro °eÜenφ splßcenφ p∙jΦky.
Program nech¥ vyzve u₧ivatele, aby zadal v²Üi p∙jΦky a v²Üi m∞siΦnφ splßtky, program ze zadan²ch hodnot spoΦφtß a vypφÜe poΦet splßtek a datum poslednφ splßtky.

Bli₧Üφ popis

  1. dneÜnφ datum bude vyjßd°eno jako konstanty mesic=10; rok=1997
  2. v²Üe p∙jΦky je neomezenß
  3. minimßlnφ splßtka je 100 KΦ m∞sφΦn∞

Diskuse k °eÜenφ
  1. P°i °eÜenφ tohoto problΘmu musφme na zaΦßtku zajistit korektnφ vstup v²Üe p∙jΦky a m∞siΦnφ splßtky. Lze °eÜit bu∩ podmφn∞n²m p°φkazem (program bude pracovat jen pokud v²Üe m∞siΦnφ splßtky spl≥uje zadanou podmφnku), nebo p°φkazem cyklu repeat (tj. bude se Φekat tak dlouho, dokud nebude zadßna korektnφ hodnota m∞siΦnφ splßtky)
  2. DalÜφ fßze programu bude zjiÜt∞nφ poΦtu splßtek. K tomu lze vyu₧φt operßtory div (mod), nebo pou₧φt nßsobenφ pro reßlnß Φφsla a operaci trunc:
    a) pocet:=pujcka div splatka a pokud je zbytek po tomto d∞lenφ nenulov², zv²Üφme poΦet o jedniΦku: inc(pocet)
    b) pocet:=pujcka/splatka;
    if pocet-trunc(pocet)>0 then pocet:=pocet+1

    pozn.: vÜimn∞te si, ₧e v p°φpad∞ a) provßdφm zv²Üenφ o jedniΦku p°φkazem inc(pocet), a v p°φpad∞ b) p°φkazem pocet:=pocet+1
  3. V zßv∞reΦnΘ fßzi bude v²poΦet data poslednφ splßtky. K tomu lze pou₧φt cyklus while.

╪eÜenφ
Program Pujcka;
Const mesic=10;
      rok=1997;
var
pocet: integer; {pocet splatek}
pujcka: LongInt; {vyse pujcky}
splatka: LongInt; {mesicni splatka}
i: integer; {pomocna promenna}

BEGIN
writeln(' Zadejte vysi pujcky a mesicni splatky: ');
readln(pujcka, splatka);

if splatka>=100 then {kdyz je vyse splatky korektni}
begin
pocet:=pujcka div splatka;
if splatka*pocet<pujcka then inc(pocet);
writeln(' Pujcka bude splacena: ',pocet,' splatkami');

{vypocitani data}
i:=1;
while i<=pocet do
begin
if mesic=12 then begin mesic:=1; inc(rok); end else inc(mesic);

writeln(' Posledni splatka bude 1.',mesic,'.',rok);
end;
end
else writeln(' Mesicni splatka je prilis nizka');
END.



[Archφv] [Zm∞na k≤dovßnφ]