AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Thema durchsuchen
Ansicht
Themen-Optionen

ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

Ein Thema von Connor Temple · begonnen am 16. Nov 2010 · letzter Beitrag vom 23. Nov 2010
Thema geschlossen
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 13:07
@gammatester:
Kann es sein, daß du dich hier etwas zu weit aus dem Fenster lehnst?
Bei der obigen Definition steht der Zusatz "(natürliche Zahlen)" so zwar nicht in Wiki, trotzdem ist er korrekt. Der Zusatz, so wie er im Text steht, bezieht sich auf die Zahlen n und m (in deinem Beispiel 3 und 5) und nicht auf die Zahlen a und b (in deinem Beispiel 0 und 3).
Ich lehne mich nicht aus dem Fenster, schon gar nicht zu weit. Wiki sprich nur von Zahlen, und wenn nichts weiter gesagt wird, nimmt man doch an, daß alle aus der gleichen Menge sind. Der Zusatz kann sich übrigens nicht sinnvoll auf m beziehen, denn warum solche man extra fordern, daß eine natürliche Zahl ungleich 0 ist.

Aber inzwischen scheint ja Einigkeit zu bestehen, auch der genannte Link ist nach erstem Überfliegen brauchbar und er listet sogar ggt(0,a) = abs(a) und ggt(0,0)=0. Dies sind völlig legale Werte und sollten nicht ad hoc ausgeschlossen werden (wie soeben wieder in einem Parallelbeitrag). Das alles wird in meiner Funktion schon gerücksichtigt. (Sie ist leider trotzdem noch nicht perfekt, da der Wert -Maxint-1 nicht richtig behandelt wird).

Geändert von gammatester (22. Nov 2010 um 13:42 Uhr)
 
Benutzerbild von Connor Temple
Connor Temple

Registriert seit: 16. Nov 2010
89 Beiträge
 
#2

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 16:16
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Ergebnis: TLabel;
    Eingabe1: TEdit;
    Eingabe2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var Teiler, z1, z2, ggT, kz, gz :Integer;
begin
z1 := StrToInt (Eingabe1.Text);
z2 := StrToInt (Eingabe2.Text);

if z1 < z2
  then
     begin
      kz := z1; // kleinste und größte Zahl bestimmen
      gz := z2;
     end
  else
    begin
      kz := z2;
      gz := z1;
    end;
  Teiler := kz + 1; // Teiler Steuervariable

  ggt := 0;
  For Teiler := 1 to kz do
      if (((kz mod Teiler) = 0) and ((gz mod Teiler) = 0))
         then ggT := Teiler;
  Ergebnis.Caption := IntToStr(ggT);

end;

end.
Ist der Code aus der Schule, für den ggT, aber für den KgV, wie müsste ich den da verändern?
 
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 16:24
kgv:= abs(z1*z2) div ggt(z1,z2) Quelle: http://de.wikipedia.org/wiki/Kleinst...mes_Vielfaches

Aus diesem Grund wäre es auch von Vorteil wenn ggt ein Funktion wäre
und nicht wie in Deinem Code vollständig in der ButtonClick Methode deklariert wird.

Grüße
Klaus
Klaus

Geändert von Klaus01 (22. Nov 2010 um 22:37 Uhr) Grund: / durch div ersetzt
 
wolfgang_SV

Registriert seit: 9. Nov 2007
Ort: Neumünster
39 Beiträge
 
#4

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 16:39
@Connor

na das ist ja umständlich...

und auch noch fehlerhaft..

gib mal eine negative Zahl ein....

PS Gruß an deinen Mathelehrer !?

Geändert von wolfgang_SV (22. Nov 2010 um 16:42 Uhr)
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 17:46
@Connor

na das ist ja umständlich...

und auch noch fehlerhaft..

gib mal eine negative Zahl ein....

PS Gruß an deinen Mathelehrer !?
Das wird hier wohl der Info-Lehrer verbrochen haben, was die Sache an sich aber auch nicht besser macht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
 
wolfgang_SV

Registriert seit: 9. Nov 2007
Ort: Neumünster
39 Beiträge
 
#6

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 18:25
@Connor

sagen wir mal so :
wenn man den euklidischen Algorithmus nicht kennt, dann ist der Ansatz gar nicht mal so verkehrt, wenn man von der rudimentären Vorstellung des ggT ausgeht. Nämlich : Suche die größtmögliche Zahl, die a und b ohne Rest teilt...
Wenn man dann davon ausgeht, dass a und b positive Zahlen sind, ist euer Programm schon in Ordnung..

Nur mit den negativen Zahlen.. Warum habt ihr nicht den Tip von unserem Sir Rufo übernommen ( abs(a) und abs(b) ) ; dann klappt's auch mit negativen Zahlen ..


nach dem Motto :
kaum macht man's falsch, meldet sich Sir Rufu

Geändert von wolfgang_SV (22. Nov 2010 um 19:45 Uhr)
 
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 22. Nov 2010, 23:01
Aber inzwischen scheint ja Einigkeit zu bestehen, auch der genannte Link ist nach erstem Überfliegen brauchbar und er listet sogar ggt(0,a) = abs(a) und ggt(0,0)=0. Dies sind völlig legale Werte und sollten nicht ad hoc ausgeschlossen werden (wie soeben wieder in einem Parallelbeitrag). Das alles wird in meiner Funktion schon gerücksichtigt. ..
Auch wenn ich mich wieder in die Nesseln setze, seis drum.

Laut ggT wiki ist ggt(a,b) = ggt(b,a) somit sollte auch ggt(a,0) = ggt(0,a) = |a| mit (a <> 0) sein.

ggt(0,0) ist nicht definiert.

Grüße
Klaus
Klaus
 
Thema geschlossen


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 13:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz