C Collatzfolge |
19.12.2013, 14:06 | Auf diesen Beitrag antworten » | |||||
Lau ra | C Collatzfolge Meine Frage: Hallo. Ich bin absolute "Programmiernooberin" und muss jetzt an der Uni C machen. Ich verstehe einzelne Befehle nicht bzw. das Verständnis ist einfach nicht da wieso das Programm so funktioniert und wie man es auch anders machen könnte. Also die Aufgabenstellung ist: a) Die Collatz-Folge ist folgendermaßen definiert: Man wähle eine beliebige natürliche Zahl a(0) und bilde damit die Zahlenfolge a(n + 1) = a(n)/2, falls a(n) gerade a(n + 1) = 3a(n) + 1, falls a(n) ungerade Die Folge endet, wenn a(n+1) den Wert 1 erreicht. Den Wert n+1 nennt man dann die Länge der Collatz-Folge zum Startwert a(1). Schreiben Sie ein Programm in C, welches die Collatzfolge (n und a(n)) für a(0) = 871 ausgibt. b) Implementieren Sie eine Routine collatz_length(n), die für das übergebene n die Länge der Collatz-Folge berechnet. Schreiben Sie ein Programm, welches collatz_length() benutzt, um danach zu suchen, für welchen Startwert im Bereich 1 ... 1000000 die Länge der Collatz-Folge maximal wird. Meine Ideen:
Das wäre soweit zur a) Könnte mir vielleicht jemand wieso return 0 am Ende macht und am Anfang diese ganzen Befehle sind mir auch nicht klar. Bedanke mich schon mal für die Aufmerksamkeit und Hilfe. Liebe Grüße Laura |
|||||
|
||||||
19.12.2013, 16:56 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Die Aufgabe kenne ich doch zum Programm: - printf ("Zahl eingeben: "); macht keinen Sinn, wenn du danach keine Zahl einlesen möchtest. - Du schreibst #define MAXPRIME 871, ohne das danach zu verwenden. - Du zählst nicht, wie viele Schritte es dauert, bis die Folge bei 1 ankommt - n=n/2.0; n /= 2 (2 als int, nicht double) tut es auch. - printf ("%d\n", n); steht bei if und bei else, das könnte man auch aus dem if-else Konstrukt herausnehmen und danach setzen return 0; ist die Rückgabe der main-Funktion. Das heißt etwa: das Programm ist abgelaufen, es ist kein Fehler aufgetreten. Was meinst du mit Befehlen am Anfang? #include <stdio.h> sorgt dafür, dass du Funktionen wie printf verwenden kannst.
|
|