Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Division by 0
Zlatan - Di 22.03.11 18:30
Titel: Division by 0
Ich habe den euklid-Algo..(ggT) programmiert, aber bei klick auf den Rechnen button, geht das programm zu grunde wegen Division by 0.
Ich kann den Fehler nicht finden, ich hoffe ihr könnt es. :lupe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.BitBtn1Click(Sender: TObject); begin a:= Strtoint(Edit1.Text); b:= strtoint(Edit2.Text); if a < b then a:=b; b:=h; h:=a; while b > 0 do a:= b; h:= a mod b; b:=h; Panel2.Caption:= inttostr(a);
end; |
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 22.03.2011 um 17:33
Tankard - Di 22.03.11 18:32
da fehlt doch noch ein begin end bei der while schleife oder?
Zlatan - Di 22.03.11 18:35
zumindestens stürzt das programm nicht mehr ab, aber ausrechnen tut der auch nichts mehr :autsch:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.BitBtn1Click(Sender: TObject); begin a:= Strtoint(Edit1.Text); b:= strtoint(Edit2.Text); if a < b then a:=b; b:=h; h:=a; while b > 0 do begin a:= b; h:= a mod b; b:=h; Panel2.Caption:= inttostr(a); end end; |
der organist - Di 22.03.11 18:37
und ich vermute mal um den Codeblock nach der Abfrage musst du auch noch ein begin und end machen....
EDIT: Was genau willste damit eingentlich machen?
Tastaro - Di 22.03.11 18:38
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.BitBtn1Click(Sender: TObject); begin a:= Strtoint(Edit1.Text); b:= strtoint(Edit2.Text); if a < b then a:=b; b:=h; h:=a; while b > 0 do begin a:= b; h:= a mod b; b := h; Panel2.Caption:= inttostr(a); end; end; |
Quellcode formatieren hilft! Und was auch helfen würde: Benenne deie Variablen verständlich.
Beste Grüße
Zlatan - Di 22.03.11 18:39
h ist eine hilfsvariable der man keinen wert zuweist.
Gausi - Di 22.03.11 18:43
Ist es eigentlich so schwer, drei Zeilen aus der Wikipedia in der richtigen Reihenfolge abzuschreiben? :gruebel:
Quelltext
1: 2: 3: 4: 5: 6:
| EUCLID(a,b) 1 solange b <> 0 2 h = a mod b 3 a = b 4 b = h 5 return a |
Zlatan - Di 22.03.11 18:45
ja weil ich noch gar nicht auf wiki war :motz:
Zlatan - Di 22.03.11 18:50
Ich habe das nun getauscht(nach deiner ordnung), aber jetzt gibt der was falsches aus und außerdem noch erst beim 2.klick :gruebel:
Jetzt habe ich es so und er gibt einfach das aus, was ich bei edit1 eingetragen habe.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.BitBtn1Click(Sender: TObject); begin a:= Strtoint(Edit1.Text); b:= strtoint(Edit2.Text); if a < b then a:=b; b:=h; h:=a; while b > 0 do begin h:= a mod b; a:= b b:=h; end; Panel2.Caption:= inttostr(a); end; |
der organist - Di 22.03.11 18:55
neuer Quelltext?
Gausi - Di 22.03.11 18:58
Delphi-Quelltext
1:
| if a < b then a:=b; b:=h; h:=a; |
Hat tastaro weiter eben auch schon bemerkt, dass das Murks ist. :roll:
Zlatan - Di 22.03.11 19:00
und wie muss es dann lauten?
(am meisten regt mich auf, dass ich es vor gut 5 stunden fertig hatte in der schule und es jetzt zu hause nicht mehr weiß) :autsch:
glotzer - Di 22.03.11 19:13
hat man dir zwar schon mindestens 5 mal gesagt aber:
ich denk den link zu den grundlagen tutorials muss ich nicht nochmal posten, du schaust eh nicht drauf...
Zlatan - Di 22.03.11 19:17
So????
er gibt jetzt immer null aus :gruebel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| a:= Strtoint(Edit1.Text); b:= strtoint(Edit2.Text); if a < b then a:=b; b:=h; h:=a; beginwhile b > 0 do h:= a mod b; a:= b; b:=h; end;Panel2.Caption:= inttostr(a); end; |
glotzer - Di 22.03.11 19:17
-.- ich spar mir jedes weitere kommentar.
Gausi hat folgendes geschrieben : |
Ist es eigentlich so schwer, drei Zeilen aus der Wikipedia in der richtigen Reihenfolge abzuschreiben? :gruebel:
Quelltext 1: 2: 3: 4: 5: 6:
| EUCLID(a,b) 1 solange b <> 0 2 h = a mod b 3 a = b 4 b = h 5 return a | |
wo muss begin und end wohl hin?
Zlatan - Di 22.03.11 19:18
warum? helf mir doch bitte, ok?
Fiete - Di 22.03.11 19:18
Moin Zlatan,
beim euklidischen Algorithmus müssen die Variablen nicht getauscht werden.
Falls nämlich a<b ist, wird automatisch getauscht (Zeile 7)!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TGgtundKgv.StartClick(Sender: TObject); var a,a1,b,b1,rest,ggT,kgV:Longint; begin a:=StrToInt(Z1.Text);b:=StrToInt(Z2.Text);a1:=a;b1:=b; repeat rest:=a mod b; a:=b;b:=rest until rest=0; ggT:=a;kgV:=(a1*b1) div ggT; ggTAusgabe.Text:=IntToStr(ggT); kgVAusgabe.Text:=IntToStr(kgV); end; |
Gruß
Fiete
Gausi - Di 22.03.11 19:20
Da hier keinerlei Eigeninitiative erkennbar ist, ist dieses Thema jetzt für 24 Stunden geschlossen. So hat Zlatan Zeit zum Nachdenken.
Morgen abend gehts hier weiter.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!