(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
Delphi 11 Alexandria
|
14. Mär 2003, 20:16
Moin VeeJay,
sollte so gehen:
Delphi-Quellcode:
var
acNum1 : array [1..100] of char;
acNum2 : array [1..100] of char;
acResult : array [1..101] of char; // Das Ergebnis kann eine Stelle länger sein!
bCarry : byte;
bDigit1 : byte;
bDigit2 : byte;
i : integer;
begin
// Zufällige einhunderstellige Zahlen erzeugen
Randomize;
for i := 1 to 100 do
begin
// ASCII Code von 0 bis 9 = 48 bis 57, deshalb + 48
acNum1[i] := chr(Random(10)+48);
acNum2[i] := chr(Random(10)+48);
end;
bCarry := 0; // Übertrag initialisieren
for i := high(acNum1) downto low(acNum2) do
begin
// Ziffern auslesen
bDigit1 := ord(acNum1[i])-48;
bDigit2 := ord(acNum2[i])-48;
// Addieren, aber nur die letzte Ziffer ins Ergebnis schreiben
acResult[i+1] := chr(((bDigit1+bDigit2+bCarry) mod 10)+48);
// ggf. den Übertrag auf 1 setzen
bCarry := ord((bDigit1+bDigit2+bCarry) > 9);
// Variante:
// bCarry := (bDigit1+bDigit2+bCarry) div 10;
end;
// den Wert für die höchste Stelle setzen
acResult[1] := chr(bCarry+48);
ShowMessage(' Zahl1: '+acNum1+#13#10+' Zahl2: '+acNum2+#13#10+' Summe: '+acResult);
end;
Ich hoffe es ist einigermassen verständlich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
|