![]() |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Zitat:
Delphi-Quellcode:
function ggt(zahl1,zahl2: integer): integer;
var rest: integer; begin zahl1 := abs(zahl1); zahl2 := abs(zahl2); while zahl2>0 do begin rest := zahl1 mod zahl2; zahl1 := zahl2; zahl2 := rest; end; ggt := zahl1; end; |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
@gammatester
das was du nun erzählst ist völlig daneben.. nimm die funktion aus meinem ersten Programmbeispiel ..#5 ggt(a,b) liefert dasgleiche wie ggt(b,a) sollten a oder b negativ sein , was von der mathematischen definition bez. modulo gar nicht vorgesehen ist ( hier unterscheidet sich mal wieder Mathematik von programmier-sprachen) dann sollte man so vorgehen : c:=abs(ggt(a,b)); |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Delphi-Quellcode:
mehr sag ich jetzt nicht...
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} function ggt(a,b : integer) : integer; var r : integer; begin repeat r:= a mod b; a:=b; b:=r; until r=0; result:=a; end; procedure TForm1.Button1Click(Sender: TObject); var a,b,c : integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=abs(ggt(a,b)); label1.caption:=inttostr(c); end; end. weil so geht es... und wenn man jetzt für a oder b den wert 0 eingibt... ok.. dann kann man das ja abfangen... |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Zitat:
Zitat:
Zitat:
- der ggt von negativen Zahlen und mod von negativen Zahlen ist selbstverständlich mathematisch vorgesehen - Programmiersprachen unterscheiden sich darin nicht: mod ist zumindest in Pascal für negative Zahlen definiert. ggt nicht, muß also selbstgeschrieben werden. Aber möglichst richtig. Pascal mod und mathematisches mod unterscheiden sich leider. Pascal: -5 mod 3 = -2, mathematisch ist -5 mod 3 = 1. Der mathematische Rest a mod b für b > 0 ist nämlich: 0 <= a mod b < b. Was bei Pascal nun mal leider nicht der Fall. Wenn man einen mathematisch korrekten ggt via Euklidischem Algorithmus berechnen will muß man das berücksichtigen. - c:=abs(ggt(a,b)) ist zwar richtig, aber nur wenn ggt schon halbwegs richtig ist, Klaus ' Funktion liefert ggt(-2,-2)=0. |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Zitat:
Per Definition liefert ggT ein Ergebnis aus der Menge der natürlichen Zahlen und damit. Weiterhin gilt:
Code:
Somit ist es absolut richtig von beiden Eingangsparametern die Absolutwerte zu nehmen.
ggT( -a, b ) = ggT( a, b )
Weiterhin gilt auch, dass keiner der Eingangswerte 0 sein darf, denn dann ist ggT nicht definiert. In dem Falle müsste also korrekterweise eine Exception ausgelöst werden. |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
falsch Sir Rufo..
gib doch einfach mal eine negative Zahl für a oder b ein.. und schau was a mod b dir zurückliefert... |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
@gammatester
ok.. entschuldigung habe die procedure von klaus01 soweit nicht getestet. wenn seine funktion für ggt(a,b) einen anderen wert als ggt(b,a) liefert , abgesehen vom vorzeichen , ist sie natürlich schrott!!! PS. obwohl auch das Vorzeichen müßte gleich sein |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
.. gut, dass ich mal wieder ein schlechtes Beispiel sein durfte..
Klaus |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
@gammatester
bez. Mathematik und natürliche Zahlen Die Division mit Rest oder der Divisionsalgorithmus ist ein mathematischer Satz aus der Algebra und der Zahlentheorie. Er besagt, dass es zu zwei Zahlen n und m <>0 aus N ( natürliche Zahlen ) eindeutig bestimmte Zahlen a und b gibt für die gilt : n=a*m +b ; 0<=b<m |
AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 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-2025 by Thomas Breitkreuz