Aufgabe:
Schreiben Sie ein Programm in C das folgenden Ablauf hat:
num → num/2 wenn n gerade is
num → 3num + 1 wenn n ungerade ist
Stopp wenn num = 1
Es sollte mir also ausgeben wie wieviele durchläufe das Programm braucht um auf die Zahl eins zu kommen.
Problem/Ansatz:
Ich habe folgenden Code geschrieben und einige Kommentare dazugeschrieben. Ich verstehe nicht so recht wieso dass ich als Ausgabe nur eine Null erhalte-egal welche Zahl ich eingebe. Wäre nett wenn mir jemand sagen könnte wo im Code der Fehler liegt.
Ich weiß nicht genau wie ich hier einen Code einfügen kann deshalb poste ich Ihn mal so:
#include <stdio.h>
int main()
{
int num;
int x;
printf("Geben Sie eine Zahl ein\n");
scanf("%d", &num); // Zahl einscannen
while(num==1){ // While Schleife wird so lange ausgeführt bis num eins ist
if((num%2) == 0){ // Wenn Zahl gerade durch zwei dividieren
num=num/2;
x +=1; } // Anzahl durchläufe aufzählen
else{
num=3*num+1; // Wenn Zahl ungerade Zahl mal Drei multiplizieren und plus eins
x +=1; // Anzahl durchläufe aufzählen
}
}
printf("%d",x);
}