(Borland) Pascal-source
til afrundingsprogrammet:
program tab_ALDRIG_noget_ved_afrunding_ved_betaling_i_DKK;
const kontant = 'med pengesedler og/eller
mønter';
elektronisk = 'med plastic';
var oerebeloeb : byte;
(* To ganske enkle funktioner, der er hentet
fra min unit indeholdende
generelle konstanter, funktioner, procedurer, mv.: *)
function leading_zeros(v : longint; n : byte) : string;
(*
Omformer tallet V til en streng af længde N, idet nuller
om nødvendigt foranstilles, således at
strengen får
denne længde *)
var temp : string;
begin
str(v, temp);
while length(temp)
< n do temp:= '0' + temp;
leading_zeros:=
temp
end;
function nbr_to_str(n : longint) : string;
(* Funktion, der modsvarer
proceduren STR, og således
omformer tallet N til en streng *)
var temp : string;
begin
str(n, temp);
nbr_to_str:= temp
end;
(* Procedure til udskrivning med opsplitning,
så ingen linje bliver
længere end 2 + 2 + 70 = 74 tegn lang: *)
procedure udskriv(tekst :
string);
var foerste :
boolean;
index : byte;
begin
write(leading_zeros(oerebeloeb, 2), ':
');
foerste:=
TRUE;
repeat
if foerste then
foerste:=
FALSE
else
write('' : 4);
index:= 70;
while tekst(. index .) <> ' ' do dec(index);
if tekst(. index .) = ' ' then
writeln(copy(tekst,
1, index - 1)) (* intet blanktegn til sidst *)
else
writeln(copy(tekst, 1, index));
delete(tekst,
1, index)
until tekst = '';
writeln
end;
begin (*
Hovedprogram *)
writeln('Måden at betale ørebeløbene 00 til 99 optimalt:');
writeln;
writeln;
for oerebeloeb:= 00 to 99 do
if (oerebeloeb
= 00) or (oerebeloeb = 50) then
udskriv('Der sker ingen afrunding, så mht. dette er det uden ' +
'betydning, om man betaler ' + kontant + ', eller ' +
elektronisk)
(* skal efterfølgende markeres med blå, fed skrift *)
else
if (((oerebeloeb mod 50) >=
1) and ((oerebeloeb mod 50) <= 24)) then
udskriv('Der
skal rundes ned til ørebeløbet ' +
leading_zeros(25 * (oerebeloeb div 25), 2)
+ '. ' +
'Hvis du vælger at gøre dette '
+ elektronisk +
', kommer du til at betale ' +
nbr_to_str(oerebeloeb - 50 * (oerebeloeb div
50)) +
' øre
mere end ' + kontant + ', så for at undgå at miste ' +
'dette beløb, gør det sidste,
hvis det er muligt')
else
udskriv('Der skal rundes op til ørebeløbet ' +
leading_zeros((50 * ((oerebeloeb div 50) +
1)) mod 100, 2) +
'. Hvis du vælger at gøre dette
' + kontant +
', kommer du til at betale ' +
nbr_to_str(50
* ((oerebeloeb div 50) + 1) - oerebeloeb)
+
' øre
mere end ' + elektronisk +
', så for at undgå at forpasse
chancen for at spare ' +
'dette beløb, gør det sidste,
hvis det er muligt');
(*
efterfølgende markeres ørebeløb, der er multipla af 5 med fed skrift,
inkl. 00; dvs. 00, 05, 10, ..., 85, 90 og 95 *)
writeln; (* ...der
efterfølgende skal have hyperlinks *)
writeln('Tilbage / Back') (* til hhv. http://urdata.dk og
.../en.htm, *)
end. (* samt stå i fed skrift *)