![]() |
Collatz Zahlenfolge ausgeben
Hallo.
Ich will ein Programm schreiben, dass die Collatz Zahlenfolge ausgeben kann. Ich will diese Zahlenfolge bis auf ein ntes Folgeglied in einem StrinGrid ausgeben lassen. Bitte helft mir xD. Ich komme mit dem ausgeben nicht so klar.
Delphi-Quellcode:
Danke schonmal im vorraus :D
procedure TForm1.Button1Click(Sender: TObject);
var x,z:int64; i,y:integer; begin i := StrToInt(Edit2.text); if TryStrToInt64(Edit1.text, x) then x := StrToInt(Edit1.text) else x := 0; z := 0; if (x = 0) or (x < 0) then showmessage('Die Zahl muss mindestens 1 sein!') else begin while (x > 1) do begin if (x mod 2 = 0) then begin x:= x div 2; Inc(z); end else begin x := x * 3 + 1; Inc(z); end; label4.caption := 'Nach ' + IntToStr(z) +' Schritten kommt 1 heraus.'; if (x = 0) or (x < 0) then begin while (x > 1) do begin if (x mod 2 = 0) then begin x := x div 2; end else begin for y := 1 to i do begin x := x * 3 + 1; end; end; end; end; end. Ich habe doch glatt vergessen zu sagen das der obere Teil dazu dient herauszufinden wann dieses typische Muster 4 2 1 auftaucht. |
Dieses Thema wurde am "18. Jan 2018, 20:27 Uhr" von "TBx" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.
|
AW: Collatz Zahlenfolge ausgeben
Auf den ersten Blick fallen mir hier schonmal ein paar Stellen ins Auge:
Delphi-Quellcode:
Block vergessen?
if TryStrToInt64(Edit1.text, x) then
x := StrToInt(Edit1.text) else x := 0; z := 0;
Delphi-Quellcode:
if (x = 0) or (x < 0) then
Delphi-Quellcode:
Logik?
if (x = 0) or (x < 0) then
begin while (x > 1) do Ansonsten solltest du deinen Code evtl. mal korrekt einrücken, dann sieht man viele Fehler schon auf Anhieb. Als Anfänger ist es zudem manchmal hilfreich um jeden Block ein
Delphi-Quellcode:
zu setzen (auch, wenn nur ein Befehl folgt).
begin..end
|
AW: Collatz Zahlenfolge ausgeben
Zitat:
Umformatiert:
Delphi-Quellcode:
So isses doch schöner?
if TryStrToInt64(Edit1.text, x) then
x := StrToInt(Edit1.text) else x := 0; z := 0;
Delphi-Quellcode:
Oder einfach nur
if not TryStrToInt64(Edit1.text, x) then
x := 0; z := 0;
Delphi-Quellcode:
Die ENDs am Ende passen optisch auch nicht zum Code darüber, vorallem die beiden aufeinanderfolgenden END in der selben Ebene.
x := StrToInt64Def(Edit1.text, 0);
z := 0; Zitat:
![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 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