AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Addition zweier beliebig großer Zahlen

Ein Thema von VeeJay · begonnen am 12. Mär 2003 · letzter Beitrag vom 15. Mär 2003
Antwort Antwort
Seite 1 von 2  1 2   
VeeJay

Registriert seit: 3. Jan 2003
10 Beiträge
 
Delphi 7 Enterprise
 
#1

Addition zweier beliebig großer Zahlen

  Alt 12. Mär 2003, 16:59
Hi Leute,
leider brauche ich noch mehr Hilfe mit meiner Klausur.
Ich brauche einen Ansatz für diese Aufgabe, die mein Lehrer wahrscheinlich aus dem Delphi Kochbuch geklaut hat.

Es sollen zwei Zahlen mit beliebiger (aber gleicher) Stellenzahl addiert werden.( Erzeuge zB. zwei 100 stellige Zufallszahlen )
Wir speichern die Ziffern als 'char' mit den Einern zuerst jeweils in einem Keller.Beim Auskellern werden die Ziffern stellenrichtig addiert unter Berücksichtigung des Übertrages.


Wenn ihr ne Idee habt, wie man das hinkriegen kann, dann könnt ich die Hilfe gut gebrauchen.
Mein erste Idee war mit "div" und "mod" zu arbeiten, um die Einzelstellen zu in Zehner und Einer einzuteilen, aber ich bin schon beim Erzeugen der 100-Stelligen Zahlen gescheitert.

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 12. Mär 2003, 17:26
Hallo VeeJay,
Ich würde das Problem nach der Grundschul aditionsmethode machen:

Man wandle die beiden Zahlen in strings um, dann fängst du von ganz hinten an und addierst immer die jeweiligen Ziffern an der Stelle der schleifenvariable. Wenn mehr als 10 rauskommt, dann speicherst du eine 1 in einer variable, und addierst die dann beim nächsten Mal mit dazu.
Alles was bei der Addition der beiden Ziffern über 10 geht, bei 16 also 6 ist dann der neue Wert. Den speicherst d udann immer in einen neuen string an der selben Stelle. Und am Ende Wandelst du dann einfach den String wieder in einen Integer oder Longint um.
Gruß
Jan

[edit] ups, hatte das:
Zitat:
Wir speichern die Ziffern als 'char' mit den Einern zuerst jeweils in einem Keller.Beim Auskellern werden die Ziffern stellenrichtig addiert unter Berücksichtigung des Übertrages.
übersehen. Naja, vielleicht hilft es dir trotzdem weiter.
BB
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#3
  Alt 12. Mär 2003, 17:33
Hoi
also wenn ich das richtig verstanden habe:
Nimm doch eine Forschleife:
Delphi-Quellcode:
for i:=1 to 100 do
begin
zahl1 := zahl1 + inttostr(random(9));
end;
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 14. Mär 2003, 21:36
Was dann ja so ziemlich genau das ist, was ich vorgeschlagen hatte, nur als Code präsentiert
BB
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 14. Mär 2003, 21:47
Moin Jan,

stimmt.
Da ich schon mal eine Bibliothek für grosse Zahlen angefangen hatte, hatte ich das nur schon, einigermassen, fertig vorliegen.

@VeeJay
Was ist eigentlich mit "Keller" gemeint?
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
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 14. Mär 2003, 21:50
Zitat:
@VeeJay
Was ist eigentlich mit "Keller" gemeint?
Genau das hatte ich mich auch gefragt.
Keller kenne ich als Speicher bei theoretischer Befassung von Alphabeten, z.B. die Klammersetzung in Delphi.
Wenn ihr jetzt keinen Schimmer habt, wovon ich rede, dann ist das auch egal :]
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
VeeJay

Registriert seit: 3. Jan 2003
10 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 15. Mär 2003, 10:44
Erstmal danke für die Antworten.
Also den Begriff "Keller" hab ich mir nicht selbst ausgedacht. Mein Info-Lehrer nennt eine dynamische Pointerkette, die aus aneinander gereiten Records besteht und nach dem LastInFirstOut Prinzip ausliest, Keller. Weil er denkt, in einem Keller holt man auch als erstes das raus, was man als letztes hereingelegt hat. Das liegt halt am nächsten zum Eingang.
Da er aber immer nur Keller sagt, kenn ich den richtigen Begriff nicht

MFG
Tim
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9
  Alt 15. Mär 2003, 11:17
Zitat von VeeJay:
...Da er aber immer nur Keller sagt, kenn ich den richtigen Begriff nicht.
Das heißt echt Keller, es gibt noch deutsche Wörter. Was heißt Keller eigentlich auf englich
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 15. Mär 2003, 11:18
Zitat von Hansa:
Was heißt Keller eigentlich auf englich
cellar bzw. basement, wobei letzteres aber auch eine bewohnbare Fläche sein kann.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz