AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LongInt zu kurz | array multiplizieren ?

Ein Thema von roboter202 · begonnen am 7. Mär 2011 · letzter Beitrag vom 7. Mär 2011
Antwort Antwort
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#1

LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:06
Hallo,

ich möchte die Zahlenfolge 1,2,4,8,16,32,64,128,256 ... bis zur Zahl 9.999.999.999.999 generieren und in einer Listbox ausgeben das Problem ist das diese Zahl zu lang/groß für einen integer oder longint ist also habe ich an einen Array array [1..13] of Integer gedacht wo ich dann die Zahl Ziffer für Ziffer speichere

Bis jetzt hab ich

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i :longint;
begin
i := 1 ;
While i < 9999999999999 do
begin
Listbox1.Items.Add(inttostr(i));
i := i * 2 ;
Listbox1.Refresh ;
If i = 0 then
begin
showmessage('error');
exit ;
end;
end;
end;
mein Problem ist einen Integer kann ich mit 2 Multiplizieren wie mache ich das mit einem Array

Gruß Chrstian
Christian
i := 0 ; While i = 0 do beep ;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

AW: LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:28
Gibt ja auch fertige BigInt Lösungen, aber wenn Du es mit dem Array lösen willst (Array of Byte würde ja reichen)

Ganz grob:

Jede Dezimal-Stelle (also jeden Array-Wert) einfach mit 2 multiplizieren. Von klein nach großer Stelle. DIV 10 zu größerer Stelle übertragen, MOD 10 behalten.
Code:
166
x2
-----
 12
12
2
=====
332
Der Einfachheit halber erst alle Array-Elemente multiplizieren (mehr als 19 kann es ja nicht werden, passt in ein Byte), danach DIV/MOD Behandlung von klein nach groß.

Geändert von Satty67 ( 7. Mär 2011 um 22:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

AW: LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:33
Du kannst das ganze mal mit Int64 verwenden. Der sollte so groß sein, dass du dich locker darin austoben kannst. Wenn das nicht reicht, gibt es BCD (ob man dann noch die Grundrechenarten anwenden kann, weiß ich nicht) oder du besorgst dir eine Mathe-Unit, die sehr große und sehr genaue Zahlen ermöglicht.

Tipp für dich: mit 2 multiplizieren (wenns schnell gehen soll): Zahl shl 1 .

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#4

AW: LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:34
Hallo,

Gibt ja auch fertige BigInt Lösungen, aber wenn Du es mit dem Array lösen willst (Array of Byte würde ja reichen)
Ah Bignt-Lösungen wusste gar nicht das es das gibt danke für den Tipp werde es erstmal probieren DANKE
Christian
i := 0 ; While i = 0 do beep ;
  Mit Zitat antworten Zitat
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#5

AW: LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:37
Danke habe es mit Int64 probiert jetzt geht es
Christian
i := 0 ; While i = 0 do beep ;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: LongInt zu kurz | array multiplizieren ?

  Alt 7. Mär 2011, 22:53
Ach OK, das offensichtliche sehe ich mal wieder nicht.
Int64 hat natürlich auch einen ausreichenden Wertebereich.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:57 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