Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Collatz Zahlenfolge ausgeben (https://www.delphipraxis.net/194913-collatz-zahlenfolge-ausgeben.html)

Pentuss 18. Jan 2018 18:04


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:
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.
Danke schonmal im vorraus :D

Ich habe doch glatt vergessen zu sagen das der obere Teil dazu dient herauszufinden wann dieses typische Muster 4 2 1 auftaucht.

DP-Maintenance 18. Jan 2018 19:27

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.

Zacherl 18. Jan 2018 19:32

AW: Collatz Zahlenfolge ausgeben
 
Auf den ersten Blick fallen mir hier schonmal ein paar Stellen ins Auge:
Delphi-Quellcode:
if TryStrToInt64(Edit1.text, x) then
     x := StrToInt(Edit1.text) else
     x := 0;
     z := 0;
Block vergessen?

Delphi-Quellcode:
if (x = 0) or (x < 0) then
Delphi-Quellcode:
if (x = 0) or (x < 0) then
     begin
       while (x > 1) do
Logik?

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:
begin..end
zu setzen (auch, wenn nur ein Befehl folgt).

himitsu 19. Jan 2018 10:20

AW: Collatz Zahlenfolge ausgeben
 
Zitat:

Zitat von Zacherl (Beitrag 1391341)
Block vergessen?

Nee, du hast das ELSE übersehn. :lol:

Umformatiert:
Delphi-Quellcode:
if TryStrToInt64(Edit1.text, x) then
  x := StrToInt(Edit1.text)
else
  x := 0;
z := 0;
So isses doch schöner?
Delphi-Quellcode:
if not TryStrToInt64(Edit1.text, x) then
  x := 0;
z := 0;
Oder einfach nur
Delphi-Quellcode:
x := StrToInt64Def(Edit1.text, 0);
z := 0;
Die ENDs am Ende passen optisch auch nicht zum Code darüber, vorallem die beiden aufeinanderfolgenden END in der selben Ebene.


Zitat:

in einem StrinGrid ausgeben lassen. Bitte helft mir xD. Ich komme mit dem ausgeben nicht so klar.
Ich glaub dir, dass es nicht funktioniert. Konnte im Code garnichts von einem StrinGrid finden (nichtmal einen Versuch) ... da kann ja nichts gehn.

Delphi-Referenz durchsuchenTStringGrid.Cells
Delphi-Referenz durchsuchenTStringGrid.Rows
Delphi-Referenz durchsuchenTStringGrid.RowCount


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.

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