Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 14. Mär 2003, 19: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
  Mit Zitat antworten Zitat