Witam napisałem program do wydawania reszty tak wiem ma on kilka niedoskonałości, które poprawie jednak najpierw prosiłbym was o pomoc, co z tym zrobić by to jako tako działało, program się kompiluje, jednak gdy wprowadzam jakas wartosc to cały sie sypie. Jedyna wartoscia ktora wprowadzilem bylo 2 na dodatek wynik z oczywistych dla mnie powodów był nieprawidłowy. Czy wgl mozna w ten sposób uzywac funkcji div, dziękuje za pomoc.
program wydawanie_reszty;
uses
crt;
var
R: longword;
a, b, c, d, e, f: longword;
i: integer;
z, y, w, v, u, t: longword;
begin
repeat
writeln ('Podaj nominal z ktorego ma byc obliczona reszta: ');
{$I-}
readln(R);
{$I+}
i:=ioresult;
if i<>0 then
writeln(' Podana przez Ciebie kwota chyba nie jest podana prawidowa!');
until i=0;
writeln('Podae kwote: ',R);
if R=0 then writeln('Nie mozna obliczyc reszty z nieczego');
if R<0 then writeln ('Nie oszukuj, jeste mi winien pieniadze!' ,R);
//G˘wna cze†
if R>=50 then //zalozenie, ze podana liczba jest wieksza badz rowna 50
a:=R div 50;
z:=R-a*50;
b:=z div 20;
y:=z-b*20;
c:=y div 10;
w:=y-c*10;
d:=w div 5;
v:=w-d*5;
e:=v div 2;
u:=v-e*2;
f:=u div 1;
t:=u-f*1;
if R<50 then
a:=0;
b:=R div 20;
y:=R-b*20;
c:=y div 10;
w:=y-c*10;
d:=w div 5;
v:=w-d*5;
e:=v div 2;
u:=v-e*2;
f:=u div 1;
t:=u-f*1;
if R<20 then
a:=0;
b:=0;
c:=R div 10;
w:=R-c*10;
d:=w div 5;
v:=w-d*5;
e:=v div 2;
u:=v-e*2;
f:=u div 1;
t:=u-f*1;
if R<10 then
a:=0;
b:=0;
c:=0;
d:=R div 5;
v:=R-d*5;
e:=v div 2;
u:=v-e*2;
f:=u div 1;
t:=u-f*1;
if R=2 then e:=2;
if R<5 then
a:=0;
b:=0;
c:=0;
d:=0;
e:=R div 2;
u:=R-e*2;
f:=u div 1;
t:=u-f*1;
if R<2 then
a:=0;
b:=0;
c:=0;
d:=0;
e:=0;
f:=R div 1;
t:=R-f*1;
writeln('50z ' ,a);
writeln('20z ' ,b);
writeln('10z ' ,c);
writeln('5z ' ,d);
writeln('2z ' ,e);
writeln('1z ' ,f);
writeln;
readln;
end.