AGB  ·  Datenschutz  ·  Impressum  







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

wie genau programmier i das GGT?

Ein Thema von Scryless · begonnen am 29. Nov 2003 · letzter Beitrag vom 14. Jun 2004
Antwort Antwort
Scryless

Registriert seit: 21. Nov 2003
Ort: Germnay - 53773 Hennef
10 Beiträge
 
#1

wie genau programmier i das GGT?

  Alt 29. Nov 2003, 13:32
also,ich schätz zum Programmieren von Brüchenkürzen,benötige ich das GGT,doch wie genau programmier ich das,ist mir total unbekannt,kann mir das jemand in anfänger language erklären und eine Pozedur angeben.

Das GGt (größter gemeinsamer Teiler) würd ich gern bei deisem Bruchrechner einsetzen können und zwar in den Befehl (Clickverfahren) "Kürzen"

THAnKS


P.s (ich sitze hier und bekomme Kürzvorschläge zum Programmieren,doch jedes MAL erscheint ne Fehlermeldung...verdammt!

Ich brauch Hilfe!!

siehe DOWNLOAD..
Angehängte Dateien
Dateityp: zip bruchrechner_-_k_rzfunktion_fehlt.zip (9,6 KB, 24x aufgerufen)
Bitte Rücksicht auf mein Delphinevau , bin n Ansteiger seit 4 Monaten..THANKS...
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#2

Re: wie genau programmier i das GGT?

  Alt 29. Nov 2003, 14:46
Hallo!

Hiermit berechnest Du den ggT mittels des Euklidischen Algorithmus. Du musst Dir lediglich noch Gedanken drüber machen, was passiert, wenn Zähler oder Nenner kleiner Null sind.

Delphi-Quellcode:
function ggT(zaehler, nenner : Integer) : Integer;
VAR r : INTEGER;
begin
  if nenner = 0 then
  begin
    result := 0;
    exit;
  end;

  while nenner > 0 do
  begin
    r := zaehler mod nenner;
    zaehler := nenner;
    nenner := r;
  end;

  result := zaehler;
end;
MfG
Peter
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#3

Re: wie genau programmier i das GGT?

  Alt 29. Nov 2003, 19:06
Ich hab hier noch ne kurze Version von ggT. Ist halt rekursiv und deshalb vieleicht net so einfach verständlich.

Delphi-Quellcode:
function ggt(a,b:longint): longint;
begin
  if b = 0 then result := a;
  else
  result := ggt(b,a mod b);
end ggt;
  Mit Zitat antworten Zitat
evilseven

Registriert seit: 6. Mai 2004
6 Beiträge
 
#4

Re: wie genau programmier i das GGT?

  Alt 12. Jun 2004, 23:40
Gibt es eigentlich auch eine Möglichkeit, das Ganze ohne Integer zu programmieren? So funktioniert das Kürzen nämlich für größere Zahlen nicht.
  Mit Zitat antworten Zitat
12. Jun 2004, 23:46
Dieses Thema wurde von "Luckie" von "Multimedia" nach "Programmieren allgemein" verschoben.
Was hat das mit Multimedia zu tun?
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#6

Re: wie genau programmier i das GGT?

  Alt 13. Jun 2004, 12:08
Moin,
du kannst int64 benutzen, da sind die Zahlen ein bisschen größer.

MfG Niels
  Mit Zitat antworten Zitat
evilseven

Registriert seit: 6. Mai 2004
6 Beiträge
 
#7

Re: wie genau programmier i das GGT?

  Alt 13. Jun 2004, 12:44
Das Problem ist nur, dass ich gerade einen Algorithmus habe, der mit SEHR großen Zahlen arbeitet, da nützt Int64 leider auch nichts. Bin noch am Suchen einer Lösung.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: wie genau programmier i das GGT?

  Alt 13. Jun 2004, 13:11
Hi,
da wirst du dir wohl selber einen [dp="Langzahlarithmetik"]Typen für Langzahlarithmetik[/dp] schreiben müssen. Bzw. nach selbigem suchen (bspw. bei Torry).

Chris
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: wie genau programmier i das GGT?

  Alt 14. Jun 2004, 11:05
@evilseven,

den ggT = GCD = Greatest Common Divisor, kannst du so wie oben gezeigt auch auf größere Zahlen adaptieren. Der Algorithmus selber bleibt also gleich. Du benötigst also eine Bibliothek die es dir ermöglicht mit sehr großen Zahlen zu rechnen. Nun, da deine Frage davon ausging das du einen ggT() für sehr große Zahlen benötigst gehe ich mal davon aus das du schon eine solche "BigNum", "Large Integer" Library benutzt.

Der obige Algorithmus ist die einfachste Form des GCD, der euklidsche Algorithmus. Gute Large Integer Librarys nutzen einen anderen Algorithmus der nach Lehmer oder Sorensen arbeitet. Der euklidsche Algo. extrahtiert von rechts nach links, also vom LSB zum MSB der Zahlen. Die Methode nach Lehmer oder Sorenson arbeiten aber umgedreht, sie berechnen die Subprodukte von Oben nach Unten, sprich vom MSB zum LSB. Dadurch sind diese Verfahren weit effizienter. Sie bauen sozusagen eine Verhältnissgleichung der MSB's beider Zahlen zueinander auf und reduzieren dann beide Zahlen so lange bis der GCD gefunden wurde. Gerade mit sehr großen Zahlen führt dies zu einer drastischen Beschleunigung des GCD.

Gruß Hagen
  Mit Zitat antworten Zitat
14. Jun 2004, 14:19
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist eine Delphi-Frage
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 18:40 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