Folgende Funktion dividiert zwei Zeichenfolgen und gibt den ganzzahligen Teil vom Ergebnis auch in einem String zurück. Sie entspricht damit dem Pascal-Operator div. Meine Funktion benutzt nicht die schriftliche Division, sondern addiert bei jedem Schleifendurchlauf den Divisor zur Variable i, bis i
divident. Die Variable temp wird bei jedem Schleifendurchlauf hochgezählt.
function division(divident, divisor : zahl) : zahl;
var
i, temp : zahl;
begin
ohnenullen(divident);
ohnenullen(divisor);
i := '0';
temp := '0';
repeat
i := addition(i, divisor);
temp := addition(temp, '1');
until (i = divident) or groesser(i, divident);
if i = divident then
division := temp
else
division := subtraktion(temp, '1');
end;
Dementsprechend habe ich auch eine Funktion rest geschrieben, die den Rest einer Division zurückgibt. Sie entspricht dem TP-Operator mod.
function rest(divident, divisor : zahl) : zahl;
var
i : zahl;
begin
ohnenullen(divident);
ohnenullen(dvisor);
i := '0';
repeat
i := addition(i, divisor);
until (i = divident) or groesser(i, divident);
if groesser(i, divident) then
rest := subtraktion(divident, subtraktion(i, divisor))
else
rest := '0';
end;