Hasse Collartz Problem in C

Gast #3846892
Lesenswert?
• ▲
▼
Hey,

ich soll im Rahmen meines Studiums ein Programm schreiben, das einige 
natürliche ganze Zahlen bis zu einer Obergrenße (max) hinurch läuft und 
dann im Tabellenformat ausgibt.

Allerdings bin ich in C noch recht schlecht und ich habe grad ein 
Problem bei der 3x + 1 Geschichte.

So sieht das ganze derzeit aus:

void collartz(int x)
{
  if(x % 2 == 0)
  {
    while(x != 1)
    {
      x = x / 2;
      printf("%d ", x);
    }
  }
  else
  {
    while(x != 1)
    {
      x = 3 * x + 1;
      printf("%d ", x);
    }
  }
}

Wenn ich jetzt (ich habe mal in der Wikipedia geschaut) 19 eingebe, dann 
kriege ich nicht, wie es eigentlich sein soll die Ausgabe
19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 
2, 1, …

sondern was komplettt anderes.
Den Abschnitt mit der x = 3x +1 scheint falsch zu sein aber so ist das 
doch richtig oder?
Also 3 * x + 1 und das x zuweisen?
Gast #3847034
Lesenswert?
• ▲
▼
hmm ..

ich habe doch noch ein Problem und zwar mit der Tabelle.
Wir sollen das ganze ja in der cmd ausgeben aber das sieht irgendwie 
nicht so gut aus.

Das steht in der Aufgabe:
In einer Tabelle die Zahl x, das Ergebnis der Berechnung für x
und die Anzahl der benötigten Schleifendurchläufe ausgeben.

Ich habe mal das Bild angehangen und wie das ganze derzeit aussieht.
Wie kann man das noch ordentlicher hinkriegen?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren