Brauche Hilfe zum Lösen einer Aufgabe

  • Hallo allerseits!

    Ich habe ein Problem mit folgender Aufgabe:

    Betrachtet folgende Bildungsvorschrift einer Zahlenfolge:
    x k+1 =( 3xk + 1 falls xk ungerade und xk=2 falls xk gerade).
    wobei x0 >= 0
    Unabhängig vom Startwert x0 nimmt die Folge nach endlich vielen Schritten periodisch die Werte (4; 2; 1) an. Beispiel:
    x0 = 5; x1 = 16; x2 = 8; x3 = 4 ; x4 = 2; x5 = 1; x6 = 4; x7 = 2; x8 = 1;....

    Nun zur Aufgabe:

    Programmiere mit Hilfe der while- und der if-Anweisungen ein Programm das die Folgenglieder dieser Folge zu einem festen x0 >= 0 berechnet und am Bildschirm ausgibt.

    Gehe bei der Lösung der Aufgabe folgendermaßen vor:

    1) Als Erstes deklariere zwei integer-Variablen x und k. In der Variablen x soll der aktuelle Wert xk und in k der Index von xk (Anzahl bereits ausgeführter Schritte) gespeichert werden.
    Initialisiere die beiden Variablen mit sinnvollen Werten, z.B. x0 = 27, k = 0.

    2) Überlege aus obigen Angaben zum Konvergenzverhalten der Folge eine Abbruchbedingung für die while-Schleife, so dass die periodischen Werte nur ein Mal berechnet werden.

    3) Programmiere in der Schleife die Berechnung der Folgenkomponenten xk.

    Nun ist meine Frage, wie die Lösung lautet?
    Ich bin ein Frischling auf dem Gebiet des c++ und nutze MS Visual Express.

    Soweit bin ich gekommen:

    #include<iostream>
    using namespace std;

    int main()
    {
    int x=27;
    int k=0;

    if (x >= 0) // wenn x >= 0
    {

    }

    Ist dieser Anfang überhaupt richtig? Ich weis nicht, wie ich weiterverfahren soll.

    Es wäre wirklich sehr hilfreich, wenn jemand hier mehr weis und es vermag die Aufgabe zu lösen (mit Kommentaren wäre es natürlich super! Da ich ja auch etwas lernen möchte :-))

    Ich hoffe es findet sich einer, der mit der Aufgabe zu recht kommt :P

  • Hausaufgaben macht hier glaub ich keiner...
    Erstmal Grundlagen lernen... ohne gehts wirklich nicht...
    kleiner tipp: x wurde nicht deklariert.

    Les dir das mal durch...
    http://www.aleksis.de/ausbild/school/pt/pt_cplusplus.html
    Dann dürftest du die Aufgabe denke ich lösen können.

    Wenns da noch kleine Probleme gibt, einfach fragen (vorher natürlich probieren!!!)
    Und wie gesagt... die Aufgabe löst hier niemand einfach mal so (höchstens gegen Bezahlung^^)

  • @Ericfisher
    Da steht int x. ;)

    @Aleph1
    Überleg dir einmal die Abbruchbedingung anders.
    Die Schleife soll ja nicht abbrechen, wenn x die 0 erreicht, sondern wenn x in die Periode kommt, also den Werte 4, 2 oder 1 annimmt. Hast du das festgestellt musst du noch die restlichen Elemente der Periode ausgeben. Und in den Schleifenkörper muss eben die Formel. Allerdings kann ich nicht identifizieren, was du da geschrieben hast. Also: Benutze Klammer, Unterstriche etc., x-Index-k kann man z.B. x_k schreiben, mit ein paar Klammern kann man dann auch anständigen Code draus machen. Die Formel brauchst du dann eigentlich nur noch in C mit if und else hinzuklatschen, aber wie gesagt: ich kann die Formel nicht lesen. (mit if(x % 2 == 0) fragst du übrigens ab, ob x gerade ist)