Gast
#3846892
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?
