AGB  ·  Datenschutz  ·  Impressum  







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

dividieren verdammt langer Zahlen

Ein Thema von Patrick · begonnen am 2. Sep 2004 · letzter Beitrag vom 3. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#1

dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:24
Tach,

Also ich weis nicht, ob ihr mir helfen könnt, wahrscheinlich ist mir nicht mehr zu helfen, aber ich probiers mal..

Eines meiner neusten Projekte beschäftigt sich mit dem Berechnen sehr großer Zahlen. Die Delphi Datentypen sind längst nicht ausreichend. Also habe ich mir da was gebastelt...

Mein Datentyp sieht so aus:
Delphi-Quellcode:
type
TZahl = record
  Zahl : array of shortint;
  Lange, Komma : longint;
  Negativ : boolean;
end;
Wenn ich nun etwas verarbeite, z.B. Addiere, dann mache ich das Zahl für Zahl (also in jedem Element meines Arrays steht nur eine Ziffer). Das ganze funktioniert mir Addieren und Subtrahieren perfekt, Multiplizieren war auch nicht schwer. Aber wie zum Teufel soll das mit Dividieren gehen???

Mathematisch geht das glaube ich garnicht, oder???
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:28
Hagens DEC-Math. Kann verdammt lange Zahlen vererbeiten.

Hier im Forum suchenUnendlich viele Nachkommastellen

Oder direkter Link zum Thread: Thread
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:31
überleg, überleg.... hmm

du könntest es so machen:

(entwurf von 1 minute überlegung..)

Delphi-Quellcode:
for i:=1 to length(Zahl.zahl) do
  begin
  if Zahl.Zahl[i] mod zuDividieren <> 0 //wenns nicht aufgeht
  then Zahl.Zahl[i+1]:=Zahl.Zahl[i+1]+Zahl.zahl[i] mod zuDividieren; //dann wird der rest zur ziffer drunter dazugetan
  Zahl.Zahl[i]:=Zahl.Zahl[i] Div zuDividieren;
  end;
allerdings kann es probleme geben wenn du shortiont nutzt, ach nee, is ja bis 256

obwohl, wenn du ne primzahl über 100 teilst dann isses im arsch...

es muss halbwegs aufgehen...

nee, ehrlich, das müsste funzen...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:34
Ich bleibe dabei: Der Weg über Hagens DECMath ist besser, da es für solche Dinge optimiert ist.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:39
wo du wahrscheinlich recht hast

aber ich schätze er will sowas ähnliches selber machen

aber er hat gefragt wie er das machen kann, er könnte es aus hagens dingens rauskopieren

»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#6

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:44
Ich könnte es kopieren, aber das will ich nicht! Ich habe die ersten drei Rechenarten auf meine Weis programmiert, jetzt will ich das auch mit der Letzten.

Also ich hab mir den Kram vom Hagen mal angesehen...
Ganz Ehrlich: Ich verstehe da nur Bahnhof

@glkbkk
Deine Lösung hinkt ein Wenig.
Was mache ich denn, wenn der Teiler sehr viel größer ist? Sagen wir einfach ich will eine 1000 stellige Zahl durch eine 1000 stellige Zahl teilen.
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:47
Also ich würde einfach die schriftliche Division programmieren...
Das ist für beliebig große Zahlen möglich!
Wahrscheinlich gibt es aber einen effizienteren Weg...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:48
Zitat:
Ich könnte es kopieren, aber das will ich nicht! Ich habe die ersten drei Rechenarten auf meine Weis programmiert, jetzt will ich das auch mit der Letzten.
siehste dax, sag ich doch

AAALLLSSSOOO, meine lösung:

lass dir was einfallen

nee, ma ernsthaft, was werden das für zahlen sein mit denen du das machst?

wenn der größte primfaktor unter 256 liegt (oder was du fürn typ nimmst), dann kannst meine lösung nehmen...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#9

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 18:48
Stellt euch doch mal vor, der Teiler passt nicht in einen Datentyp...
Daran habe ich doch auch schon gedacht, aber nur so lange, bis ich einen zu großen Teiler hatte.
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: dividieren verdammt langer Zahlen

  Alt 2. Sep 2004, 19:53
ja dann sag halt

Delphi-Quellcode:
try
  for i:=1 to length(Zahl.zahl) do
  begin
    if Zahl.Zahl[i] mod zuDividieren <> 0 //wenns nicht aufgeht
    then Zahl.Zahl[i+1]:=Zahl.Zahl[i+1]+Zahl.zahl[i] mod zuDividieren; //dann wird der rest zur ziffer drunter dazugetan
    Zahl.Zahl[i]:=Zahl.Zahl[i] Div zuDividieren;
  end;
except
  Application.MessageBox('Zu großer Primfaktor','Es wurden Divisonsoperationen mit einer Zahl durchgeführt, dessen Primfaktoren zu groß sind');
end;
wenns dir so nicht gefällt nimm hagens unit...Mann!
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:36 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