Sternchen Ausgabe



  • Hallo erstmal

    also ich hab da ein Problem zum folgenden Programm. Ich soll ein Figur bzw. bild erzeugen das nur aus sternchen besteht. Mir fällt es schwer die if abfrage dafür zu bestimmten. ich hoffe jemand kann mir da helfen.

    Aufgaben Stellung:

    Erzeugen Sie ein Programm, dass die folgende Figur auf dem Bildschirm erzeugt. Achten Sie dabei darauf, dass die Breite des Bildes stets zwei mal der Höhe plus eins entspricht.
    Der Nutzer soll zusätzlich einen Versatz angeben können, der die Diagonale in dem Bild verschiebt.

    http://img80.imageshack.us/img80/5497/aufgabe7.jpg



  • Wo hakt es denn? Hast Du die Aufgabenstellung verstanden? Kennst Du Schleifen? Wie ist Dein Ansatz?


  • Mod

    Wo ist dein Problem? Erkennst du nicht das Muster nach dem das Bild aufgebaut ist? Ist bei 2 Beispielen natürlich schwer, weil da alles mögliche zu passen würde. Ich erkenne unter anderem folgendes Muster:
    Sei G die Größe und A die Anfangsgröße.

    In der ersten Reihe stehen G+A Sternchen. Dann folgen noch G-1 weitere Reihen, also insgesamt G Stück. In jeder Reihe kommt ein Sternchen dazu, bis zu einem Maximum von 2*G. Wenn dieser Wert erreicht ist, folgen eventuell weitere Reihen, aber die Sternchenzahl bleibt konstant.

    Das solltest du lieber nicht mit if-Abfragen programmieren, sondern das schreit nach einer Konstruktion mittels Schleifen. Und das ist wohl auch genau das was du dabei lernen sollst.



  • std::cout << std::setw(100) << std::setfill('*') << "" << std::endl;
    

    Und wenn du dir eine Schleife sparen willst, dann kannst du so die Sterne ausgeben. 🤡

    Alternativ (mit Schleife):

    for (size_t i = 0; i < 100; ++i)
    {
       std::cout << '*';
    }
    


  • SeppJ schrieb:

    Wo ist dein Problem? Erkennst du nicht das Muster nach dem das Bild aufgebaut ist? Ist bei 2 Beispielen natürlich schwer, weil da alles mögliche zu passen würde. Ich erkenne unter anderem folgendes Muster:
    Sei G die Größe und A die Anfangsgröße.

    In der ersten Reihe stehen G+A Sternchen. Dann folgen noch G-1 weitere Reihen, also insgesamt G Stück. In jeder Reihe kommt ein Sternchen dazu, bis zu einem Maximum von 2*G. Wenn dieser Wert erreicht ist, folgen eventuell weitere Reihen, aber die Sternchenzahl bleibt konstant.

    Das solltest du lieber nicht mit if-Abfragen programmieren, sondern das schreit nach einer Konstruktion mittels Schleifen. Und das ist wohl auch genau das was du dabei lernen sollst.

    Also das hört sich schon mal gut an. Ich hab jetzt die äußere for schleife so bestimmt: for(x=G+A; x<G*2; x++)

    die innere for schleife müsste dann doch so aussehen? for(y=0; y<G-1; y++}

    nach den beiden for schleifen müsste doch dann der cout << "*"; erfolgen. Und das alles ohne If Abfrage?


  • Mod

    Probiers doch einfach aus. Du wirst feststellen, dass du noch etwas basteln musst, aber das bekommst du schon hin.



  • jkljkl schrieb:

    std::cout << std::setw(100) << std::setfill('*') << "" << std::endl;
    

    Und wenn du dir eine Schleife sparen willst, dann kannst du so die Sterne ausgeben. 🤡

    An der Aufgabenstellung solltest du ungefähr sehen, welche Fertigkeiten
    erwartet werden. Sie zielt ja wohl eindeutig auf verschachtelte Schleifen hin.

    Dann sollte so eine Info wohl eher verwirrend (oder einfach klugscheißerisch?) als hilfreich sein.
    Sowas kann man am Ende posten, wenn die Schleifen funktionieren um zu
    zeigen, dass es weitere Möglichkeiten gibt.

    @subsab:
    Überleg dir einfach mal für ein paar Beispieleingaben, wie oft die äußere
    Schleife ausgeführt werden muss und dann überleg dir welcher Zusammenhang
    zwischen den Eingaben und der Häufigkeit besteht. Danach gehst du für die
    innere Schleife analog vor, wobei dir die Zählvariable der äußeren Schleife
    als zusätzliche 'Eingabe' zur Verfügung steht.


Anmelden zum Antworten