(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                     *)