Aufgabenstellung am besten umsetzen (logisch denken üben)



  • Hallo zusammen,

    ich lerne seit Anfang September C++ in der Schule. Eigentlich finde ich das ganze gar nicht so schwer und ich kann auch alles recht gut nachvollziehen und umsetzen.

    Bei mir haperts im Moment am logischen umsetzen. Für mich sind die Schritte, die das Programm machen soll, damit das raus kommt, was ich möchte, noch nicht ganz klar. Gibt es da irgendwelche Lektüren oder Erfahrungen, wie man das ganze vielleicht üben kann?

    Hier eine Aufgabenstellung, die ich zB ohne Probleme umsetzen konnte:
    Die Summe der ersten n Zahlen erhält man durch folgende Formel:
    ∑_(i=i)^n▒i= (n*(n+1))/2
    Schreibe ein Programm, das für einzugebende n diese Formel überprüft, indem beide Seiten der Gleichung getrennt berechnet und anschließend verglichen werden.

    Wo es mir aber noch an den Lösungsansätzen fehlt ist zB:
    Schreibe ein Programm, das für eine eingebende positive zahl n ein Dreieck aus Sternen druck, das aus n Zeilen und aus (2n-1) Spalten besteht.

    Mir ist klar, wie das Ergebnis aussehen soll, aber wo es dann dazu kommt, dass die Spalten und Zeilen anhand der eingegebenen Zahl ausgegeben werden hört es auf bei mir. Noch dazu soll das, wenn ich den Lehrer richtig verstanden habe, alles zentriert dargestellt werden.
    Alles natürlich in C++ ohne großartig irgendwelche Bibliotheken einzubinden, die wir noch nicht gelernt haben. Derzeit sind das noch nicht so viele. Gerade mal iostream, cmath, iomanip, algorithm und QTime. Schleifen haben wir natürlich schon durch, soll ja auch eine Übung für Schleifen sein 😃

    Kann man diese Denkweise eigentlich lernen, oder ist das einfach nur "man hat's oder man hat's nicht"?

    LG



  • 1. Überlege, wie du manuell das Dreieck Zeile für Zeile zeichnen würdest.
    2. Wenn dir das klar ist, musst es nur noch in C++ formulieren.



  • Sowie ich das verstehe, willst Du das Dreick mit ASCII Zeichen auf der Konsole "zeichnen", ja?

    Die einfachste Vorgehensweise ist doch sicher, dass man eine Schleife über die Anzahl der gewünschten Zeilen laufen lässt, mit einem einzigen** * in der ersten Zeile anfängt und in jeder weiteren Zeile links und rechts je einen weiteren * **anfügt:

    N=1

    *
    

    N=2

    *
    ***
    

    N=3

    *
     ***
    *****
    

    Die Anzahl von 2N-1 "Spalten" (d.h.: 2N-1** * **Zeichen in der letzten Zeile) ergibt sich dann ganz von selbst 😃

    Ich werde Dir jetzt aber hier nicht den fertigen Code hinschreiben...


Log in to reply