Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung (https://www.delphipraxis.net/155991-ggt-und-kgv-von-2-zahlen-berechnen-absolut-keine-ahnung.html)

Connor Temple 16. Nov 2010 08:05

ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Habe ein Problem mit Delphi 3, wir haben im Unterricht die Aufgabe mit Delphi den ggT und KgV von 2 Zahlen auszurechnen.
Meine Form1 sieht so aus:
http://www.imgbox.de/show/img/p4IK3eWj4Q.png
Die Textboxen heißen von rechts nach links : Eingabe1, Eingabe2, ggTAusgabe und KgVAusgabe.

Ich weiß leider absolut nicht wie ich mit programmieren anfangen soll, da ich mit Delphi noch nicht klarkomme.

Ich würde mich über Hilfe sehr freuen.
Mfg. Connor Temple

Klaus01 16. Nov 2010 08:16

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Schreibe Dir mal auf wie das zu Fuss ausgerechnet wird
und setze es dann in Programmcode um.

Euklidischer und steinscher Algorithmus


Ähnliches wirst Du auch für den KGV finden.

Dann solltest Du noch wissen wie man Zeichenketten (Strings)
in Zahlen umwandelt und umgekehrt.

Grüße
Klaus

implementation 16. Nov 2010 17:47

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Den KgV kannst du über das Produkt berechnen, denn es gilt:

z1 * z2 = ggT(z1, z2) * kgV(z1, z2)

also:

kgV(z1, z2) = z1 * z2 / ggT(z1, z2)

Dazu musst du halt bloß vorher mit dem euklidischen Algorhythmus den ggT berechnen.

Connor Temple 16. Nov 2010 20:34

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Mit sowas hab ich noch nie gerechnet, ich brauche echt den Programmcode um das nachzuvollziehen, was da gemacht wird.
Ich hab absolut keinen Plan von der Delphi-Sprache und was ich da eingeben soll, mein Lehrer verzweifelt an mir auch schon fast.

wolfgang_SV 16. Nov 2010 21:40

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
hier ist der komplette Programm_code fü die Berechnung vom ggT



Delphi-Quellcode:
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 t,r : integer;
  begin
  if a<b then
    begin
    t:=a;
    a:=b;
    b:=t;
    end;

  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:=ggt(a,b);

  label1.caption:=inttostr(c);
  end;

end.

Sir Rufo 16. Nov 2010 21:41

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

Zitat von Connor Temple (Beitrag 1062030)
Mit sowas hab ich noch nie gerechnet, ich brauche echt den Programmcode um das nachzuvollziehen, was da gemacht wird.
Ich hab absolut keinen Plan von der Delphi-Sprache und was ich da eingeben soll, mein Lehrer verzweifelt an mir auch schon fast.

Ich vermute mal, die Defizite sind schon bei der Mathematik vorhanden.
Wenn du das gestellte Problem mit deinen mathematischen Kenntnissen nicht lösen kannst, dann wirst du es auch nicht programmieren können, jedoch auch nicht verstehen, wenn du die fertig programmierte Lösung siehst.

Piethan 16. Nov 2010 21:49

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Eigentlich war schon alles vorhanden, was benötigt wurde. Und im Wiki ((Euklidischer Algorithmus Rekursive Variante) stand
auch noch fast die ganze Lösung:

Code:
euclid(a,b)
begin
  wenn b=0 dann return a
  sonst return EUCLID(b, a mod b)
end
Und den KgV hätte er sich damit auch ableiten können:
Code:
kgv(a,b)
begin
  return ((a*b)/euclid(a,b));
end

Connor Temple 17. Nov 2010 15:31

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

Zitat von Sir Rufo (Beitrag 1062049)
Zitat:

Zitat von Connor Temple (Beitrag 1062030)
Mit sowas hab ich noch nie gerechnet, ich brauche echt den Programmcode um das nachzuvollziehen, was da gemacht wird.
Ich hab absolut keinen Plan von der Delphi-Sprache und was ich da eingeben soll, mein Lehrer verzweifelt an mir auch schon fast.

Ich vermute mal, die Defizite sind schon bei der Mathematik vorhanden.
Wenn du das gestellte Problem mit deinen mathematischen Kenntnissen nicht lösen kannst, dann wirst du es auch nicht programmieren können, jedoch auch nicht verstehen, wenn du die fertig programmierte Lösung siehst.

Ich konnte mit Delphi nichtmal ein Plus-Minus-Rechen-Programm schreiben, ich weiß wie man das ggT und KgV berechnet, aber ich komme mit den ganzen Delphi-Befehlen nicht klar.

Hab mir aus unserer Mediothek das Buch: Delphi 3 für Dummies ausgeliehen, ist das gut, um das Programm doch noch zu lernen?

implementation 17. Nov 2010 16:13

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

Zitat von Connor Temple (Beitrag 1062194)
aber ich komme mit den ganzen Delphi-Befehlen nicht klar.

Könnte daran liegen, dass es in Delphi keine Befehle gibt, nur Aufrufe, Zuweisungen und Konstrukte :lol:

Wolfgang Mix 17. Nov 2010 18:04

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ich denke, dieser Link müsste dir zum Durchstarten helfen:
http://www.delphi-treff.de/tutorials.../warum-delphi/

Delphi-Laie 17. Nov 2010 21:39

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

Zitat von implementation (Beitrag 1062206)
Zitat:

Zitat von Connor Temple (Beitrag 1062194)
aber ich komme mit den ganzen Delphi-Befehlen nicht klar.

Könnte daran liegen, dass es in Delphi keine Befehle gibt, nur Aufrufe, Zuweisungen und Konstrukte :lol:

Welch eine Sophisterei! Zuweisungen sind sehr wohl Befehle, nämlich eben Zuweisungsbefehle. Mit if wird die Feststellung eines Wahrheitsgehaltes befohlen, mit repeat ein mindestens einmaliger Schleifendurchlauf (was ohne Wiederholung allerdings noch keine echte Schleife ist) usw. usf. . Letztlich sind das alles doch Befehle an den Computer.

Ich würde dem Fragenden das mathematische Hintergrundwissen keinesfalls absprechen, so etwas finde ich ungehörig. Ist zwar schon ein geraumes Weilchen her, aber ich kann mich sehr wohl noch daran erinnern, daß ich zwar die Fakultät mathematisch verinnerlichte, mich jedoch außerstande sah, ihre Berechnung in Basic umzusezten.

Der Einstieg ist überall schwierig. Jeder, der sich hier zu überheben versucht, sollte nicht vergessen, daß er ebenfalls als Neugeborenes ohne jegliches erworbenes Wissen auf die Welt kam.

Der Pseudocode und auch die an das Englisch angelehnten Sprachbefehle des Pascals bzw. Delphis sollten allerdings den Einstieg so einfach wie möglich machen. Die vielleicht ungewöhnlichste Begegnung der ersten Stunden ist womöglich die Wert- bzw. Ergibt-Sich-Aus-Zuweisung, die es in der Mathematik mangels Notwendigkeit so (also mit dieser Syntax) nicht gibt.

Sir Rufo 18. Nov 2010 00:21

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

Zitat von Delphi-Laie (Beitrag 1062239)
Ich würde dem Fragenden das mathematische Hintergrundwissen keinesfalls absprechen, so etwas finde ich ungehörig.

Es wurden Hinweise zu den verschiedenen Berechnungs-Algorithmen gegeben und dann das:
Zitat:

Zitat von Connor Temple (Beitrag 1062030)
Mit sowas hab ich noch nie gerechnet, ich brauche echt den Programmcode um das nachzuvollziehen, was da gemacht wird.
Ich hab absolut keinen Plan von der Delphi-Sprache und was ich da eingeben soll, mein Lehrer verzweifelt an mir auch schon fast.

Und in die Forensuche mal Hier im Forum suchenkgv eingegeben bringt uns u.a. hierzu
ich finde es durchaus nicht ungehörig sondern noch überaus freundlich, da es sich hier augenscheinlich um einen Zeitgenossen handelt, der es (angeblich) nicht schafft
Delphi-Quellcode:
c := a + b;
zu schreiben
Zitat:

Zitat von Connor Temple (Beitrag 1062194)
Ich konnte mit Delphi nichtmal ein Plus-Minus-Rechen-Programm schreiben

sondern dem auch Suchfunktionen völlig fremd sind.

Eine Frage a la
Zitat:

Hab da den Code gefunden, der xy berechnet. Kann mir das mal jemand erklären?
hätte ich ja noch verstanden.

Das hier riecht nach
Zitat:

Sei schlau, bleib dumm!
Was ich nicht kann, brauch ich nicht machen!

Connor Temple 18. Nov 2010 17:48

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Danke erstmal für die netten antworten, danke auch dir Sir Rufo, dass du mein Mathewissen infrage stellst xD

Ich kam mit VB damals auch kaum klar, aber immer noch besser als in Delphi und das ist erstmal ne riesige Umstellung für mich.
Wir schreiben nächste Woche auch eine Klausur, und ich wollte mich so schnell wie mir möglich ist mit dem Programm vertraut machen.

EDIT:
Ich habs grad nochmal mit wolfgang_SVs Lösung probiert, ich bin kläglich gescheitert...
Ich bin echt am verzweifeln, weil ichs nicht verstehe.

p80286 19. Nov 2010 12:38

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ja was bringt Dich denn zur Verzweiflung?
Wir haben hier einen ganz konkreten Sourcecode, da kannst Du auch ganz konkret fragen.

Gruß
K-H

Edith:
Schön ist er ja nicht...

rollstuhlfahrer 19. Nov 2010 15:24

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

Zitat von Delphi-Laie (Beitrag 1062239)
Die vielleicht ungewöhnlichste Begegnung der ersten Stunden ist womöglich die Wert- bzw. Ergibt-Sich-Aus-Zuweisung, die es in der Mathematik mangels Notwendigkeit so (also mit dieser Syntax) nicht gibt.

Einspruch: Die gibt es. Sie nennt sich nur "ist definiert als". Es ist in der Mathematik, besser in der physikalischen Mathematik nicht ungewöhnlich wenn man schreibt: F := m * s (weil die Kraft eben so definiert ist und nicht anders.)

Bernhard

PS: Es ist ein Nebenkriegsschauplatz, ob man sagt, Zuweisungen werden mit einem "=" behandelt, oder ob man sagt Zuweisungen sind Definitionen (was sie im eigentlichen Sinne ja auch sind) und man deshalb ein ":=" verwenden muss.

PPS: Was ist an dem Code nicht zu verstehen? Man braucht 2 Edits, 1 Button und 1 Label. In die Edits kommen später die Zahlen rein für den GGT und auf dem Label erscheint die Ausgabe. Der Button ist dafür da, um dem Programm zu sagen, dass es erst bei einem Klick loslegen soll. Der Rest des Quellcodes kann man einfach 1:1 mittels Copy&Paste übernehmen.

Connor Temple 19. Nov 2010 18:13

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ich hab ja die Namen der Textboxen usw. geändert, ich kann also nicht ohne weiteres den Text kopieren.
Mittlerweile hab ich es sogar geschafft ein Programm zu schreiben, dass die 4 Grundrechenarten berechnet.
Nur beim dividieren hab ich noch Probleme einen eigenen Fehlercode für eine Division durch null zu schreiben.

wolfgang_SV 19. Nov 2010 18:44

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
ich sag da nichts mehr dazu....

weil irgendwann is mal schulz !!!

silver-moon-2000 19. Nov 2010 18:57

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

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1062603)
Einspruch: Die gibt es. Sie nennt sich nur "ist definiert als". Es ist in der Mathematik, besser in der physikalischen Mathematik nicht ungewöhnlich wenn man schreibt: F := m * s (weil die Kraft eben so definiert ist und nicht anders.)

Ähem... Einspruch, die Kraft IST anders definiert... :-D
Wenn, dann
Zitat:

F:= m * a
oder, was Du vermutlich gemeint hast F := m * (d^2)s / (dt)^2

[/OT]

Connor Temple 19. Nov 2010 20:06

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ihr scheint mir hier anscheinend auch nicht genug helfen zu wollen, bzw. zu können.

Luckie 19. Nov 2010 20:14

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Du hast praktisch das gesamte Programm mundgerecht geliefert bekommen. Was willst du noch? Wenn du was nicht verstehst, dann stelle entsprechend spezifische Fragen. Und wenn du nicht etwas Eigeninitiative zeigst, dann können wir auch nichts dafür.

Connor Temple 19. Nov 2010 21:26

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ich verstehe das Programm Delphi im Ansatz schon nicht.
Wir haben von unserem Lehrer zwar Blätter bekommen, aber trotzdem funktioniert es nicht immer wie es geplant war.

DeddyH 19. Nov 2010 22:06

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Dann stell doch einfach konkrete Fragen, dann bekommst Du auch konkrete Antworten.

rollstuhlfahrer 19. Nov 2010 22:12

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Bist du wenigstens in der Lage, das ganze mit VB zu meistern? - Das wäre immerhin schon mal ein Anfang.

Bernhard

Connor Temple 20. Nov 2010 12:07

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Wahrscheinlich auch nicht mehr, da ich seit nem Jahr auchbe VB nichts mehr verstehe. Und weil VB nicht mehr auf meinem Pc ist.

Bei meinem Prgramm der vier Grundrechenarten, kommt immer eine Fehlermeldung, dass ich nicht durch null teilen kann, obwohl ich eingegeben hatte, was er stattdessen sagen soll.

DeddyH 20. Nov 2010 12:15

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Und wie? Etwas Code wäre schon hilfreich.

Connor Temple 20. Nov 2010 12:58

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Delphi-Quellcode:
procedure TForm1.TeilButtonClick(Sender: TObject);
var a,b,c :Real ;
begin
a := StrToFloat (Zahl1.Text);
b := StrToFloat (Zahl2.Text);

c:= a/b;
Ausgabe.Caption := FloatToStr (c);
If b = 0 then Ausgabe.Caption :='Man kann nicht durch null teilen.'

end;
Das wäre der gesamte Divisionscode.

mkinzler 20. Nov 2010 13:00

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Die Überprüfung auf 0 würde ich vor der Berechnung machen und diese nur wenn b<> 0 ist.

BTW. : Besser Double/Extended Typen verwenden

Connor Temple 20. Nov 2010 18:31

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Double/Extended?
Sowas hatten wir im Unterricht bisher noch nicht.

Ich habs jetzt umgeschrieben, jetzt klappts.
Vielen Dank, ich bin grad voll froh, dass endlich mal irgendwas klappt.

Luckie 20. Nov 2010 18:36

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Wie bist du überhaupt auf die Idee gekommen diese Fließkomma Datentypen zu benutzten? Ich meine eine Primzahl mit Nachkommastellen ist mir noch nie untergekommen. Primzahlen sind immer ganz Zahlen, also Integers.

Sir Rufo 20. Nov 2010 18:51

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

Zitat von Luckie (Beitrag 1062859)
Wie bist du überhaupt auf die Idee gekommen diese Fließkomma Datentypen zu benutzten? Ich meine eine Primzahl mit Nachkommastellen ist mir noch nie untergekommen. Primzahlen sind immer ganz Zahlen, also Integers.

Das ist ein Mix-Thread aus mehreren Themen. Die Primzahlen sind oben und hier unten sind die Grundrechenarten.

Entweder der Conner erstellt jetzt ein Inhaltsverzeichnis mit entsprechenden Links für diesen Thread oder er hält sich an die Forenregel "ein Thema pro Thread"

Sir Rufo 20. Nov 2010 19:06

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Wenn man sich wundert, warum da irgendwas passiert, was man nicht erwartet, und man im Prinzip gar nicht versteht was da so passiert, dann hilft immer die Methode mit einem Ausdruck des Quelltextes, ein leeres Blatt Papier und evtl. für Notizen Block und Stift.

Versuchen wir mal das Beispiel mit dem Teilen.
Da wird etwas komisches ausgegeben, was man so gar nicht vermutet hat. Also machen wir das mal als Trockenübung

Delphi-Quellcode:
a := StrToFloat (Zahl1.Text);
Ok, merke ich mir (a ist 5)
Delphi-Quellcode:
b := StrToFloat (Zahl2.Text);
Ok, merke ich mir (b ist 0)
Delphi-Quellcode:
c:= a/b;
Öh, das kann ich ja gar nicht berechnen "Hallo, kann mir mal jemand helfen?"
Na, dann höre ich mal auf, denn hier stimmt was nicht!

Komischerweise kommt man zu dem gleichen Ergebnis wie das kompilierte Programm

mkinzler 20. Nov 2010 19:19

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Tja ein Schreibtischtest ist halt ganz aus der Mode gekommen

Luckie 20. Nov 2010 19:41

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

Connor Temple 20. Nov 2010 20:08

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Ich habs ja jetzt hingekriegt, aber jetzt ist das Problem, dass wenn ich durch eine Zahl die größer oder kleiner als null ist, teile, kommt das Ergebnis:
1,05940440336306E-22

Ich kann das irgendwie auch nicht beheben.
Auch wenn ichs mit der Aufschreibmethode versuche, weiß ich trotzdem nicht wie ich das im Programm schreiben soll, dass der Pc das versteht.

Luckie 20. Nov 2010 20:10

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Wie gibst du die Zahl denn aus?

Wolfgang Mix 20. Nov 2010 20:12

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Warum rechnest du nicht mit ganzen Zahlen, wie schon oben erwähnt?

Luckie 20. Nov 2010 20:24

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

Zitat von Wolfgang Mix (Beitrag 1062889)
Warum rechnest du nicht mit ganzen Zahlen, wie schon oben erwähnt?

Es geht hier mittlerweile um seinen Rechner.

Connor Temple 20. Nov 2010 20:28

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
So, hab nochmal ne halbe Stunde dran rumprobiert, jetzt klappts endlich:
Delphi-Quellcode:
procedure TForm1.TeilButtonClick(Sender: TObject);
var a,b,c :Real ;
begin
a := StrToFloat (Zahl1.Text);
b := StrToFloat (Zahl2.Text);



If b <> 0 then c := a/b ;
Ausgabe.Caption := FloatToStr (c);
If b = 0 Then Ausgabe.Caption :='Man kann auch im Jahr 2010 immer noch nicht durch null teilen.';

end;
Das ist mein Code.

Bummi 20. Nov 2010 20:53

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Delphi-Quellcode:
procedure TForm1.TeilButtonClick(Sender: TObject);
var a,b,c :Real ;
begin
a := StrToFloat (Zahl1.Text);
b := StrToFloat (Zahl2.Text);



If b <> 0 then
begin
   c := a/b ;
  Ausgabe.Caption := FloatToStr (c);
end
else Ausgabe.Caption :='Man kann auch im Jahr 2010 immer noch nicht durch null teilen.';

end;
In Deinem Beispiel gibst Du c aus das als Stackvariable nicht initialisiert ist, da kann sonstwas drin stehen, außerdem gibt es ja nicht anzuzeigen.

Wolfgang Mix 20. Nov 2010 21:03

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung
 
Der Else-Zweig wird wohl nie erreicht, schau mal bei Luckies Homepage vorbei :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Seite 1 von 3  1 23      

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