"Zeichnen" mit der For-Schleife...



  • Huhu..
    Habe generell kein Problem mit der for-Schleife, aber hab hier ne Aufgabe wo ich irgendwie keinen logischen Ansatz finde.. Mir ist zwar schon klar, wie ich das machen müsste mit for-schleifen, aber irgendwie bekomm ichs net hin 😕 vielleicht kann ja jemand helfen:

    1. Die Aufgabe:

    Erstellen Sie ein Programm, welches nach Eingabe der Höhe ( hoehe ) und des Zeichens ( zeichen ) eine Raute aus eben jenem Zeichen erstellt, welche die angegebene Höhe hat.

    Benutzen Sie nur for-Schleifen sowie cout.

    2. Mein Ansatz:
    Ihr wisst ja wie ne Raute aussieht^^

    Okay.. Ich mache also erstmal ne for-Schleife:

    for ( int i = 1; i <= hoehe; i++)
    // Damit zeichne ich die Zeilen...
    {
    /* hierein muss wieder ne for-schleife.. bis zur "mitte"  das ist kein problem.. aber wie sag ich ihm das er danach plötzlich wieder "rückwärts" rechnet? ich kann ja die raute in 4 dreiecke aufteilen, welche ich ja recht leicht mit for-schleifen zeichnen kann.. nur ich bekomms net gebacken das die hinternander liegen :/
    
    */
    

    Bin für jede Hilfe dankbar! 🙂

    Die nächste Aufgabe:

    Erstellen Sie ein Programm, welches ein Rechteck oder ein Dreieck mit beliebiger Höhe und Breite zeichnet.

    Funktionen die genutzt werden dürfen:
    if, switch, for, cout, cin

    Sonderaufgabe:
    Schreiben Sie das Programm erneut, so dass es möglichst klein ist mit den genannten Funktionen. Versuchen Sie unnötige Dinge wegzulassen!

    Mein Ansatz:

    Klar.. Erst ne Switch Abfrage ob Dreieck oder Rechteck.. und dann mit for-schleifen zeichnen. ist ja generell simpel^^ Rechtecke ist leicht mit 2 fors und dreieck auch.. aber was kann ich daran jetzt noch verbessern?

    Mein Code:

    int auswahl,i,k,hoehe,breite;
    cin >> auswahl;
    cin >> hoehe;
    cin >> breite;
    switch(auswahl)
    {
       case 1:
       for (i=1;i<=hoehe;i++)
       {
          for (k=1;k<=breite;k++)
          {
              cout << "*";
           }
        cout << "\n";
        }
        break;
        case 2:
        for (i=1;i<=hoehe;i++)
        {
           for (k=1;k<=i;k++)
           {
               cout << "*";
           }
         cout << "\n";
         }
         break;
         default:
          cout << "falsche eingabe..\n";
    }
    

    Nächste Aufgabe:

    Erstellen Sie, wenn möglich, ein Programm, welches nach Eingabe der Eckenzahl ein Vieleck mit besagter Eckenzahl zeichnet. Eine Seite des Vielecks soll ebenfalls angegeben werden. (Alle Seiten sind gleich lang!)

    Nutzen Sie nur:
    for, if , switch, cout, cin

    Hmm..
    Also 3Eck ist klar.. 4 Eck ist auch klar..
    Danach wirds kniffelig..
    Gibt es so ne "Formel"?
    mit "wenn möglich" meint der Lehrer immer wir sollen halt prüfen obs möglich ist mit den Möglichkeiten die wir haben und wenn nicht begründen warum...

    hmm 😕



  • also zur 2. aufgabe
    versuch mal den hier

    void daten(int *,int *);                    //Funktionsprototyp
    int main()
    {
    int auswahl,hoehe,breite;
    cout<<"1 Rechteck"<<endl<<"2 Dreieck"<<endl<<"3 ende"<<endl<<"Auswahl treffen :"; 
    cin >> auswahl;                              // ist immer praktisch,wenn der benutzer weiß, was er eingeben soll :-)
    while(auswahl<1||auswahl>3)
    {
    cout<<"Falsche Eingabe! Bitte wiederholen"; // das ist ne richtige abbruchbedingung
    cin>>auswahl;                               // und das prog läuft bis der benutzer es abbricht
    }
    
    switch(auswahl) 
    {               
       case 1:
       daten(&hoehe,&breite);                   // Funktionsaufruf 
       for (int i=1;i<=hoehe;i++)               // du brauchst variablen erst dann deklarieren, wenn du sie brauchst.
       {  
          for (int k=1;k<=breite;k++) 
          cout << "*";                          // wenn du nur eine anweisung in einer schleife/bedingung hast, brauchst du keine klammern setzen
       cout << "\n"; 
       } 
       break; 
       case 2:
       daten(&hoehe,&breite);
       for (int i=1;i<=hoehe;i++) 
       {  
          for (int k=1;k<=i;k++) 
          cout << "*"; 
       cout << "\n"; 
       } 
       break;                                   // das default is totaler ****, weil es nicht auf falsche eingabe reagiert guck mal oben die while an 
       case 3:
       break;
    }
    
    system("pause");
    return 0;
    }
    void daten(int *h,int *b)                   // das ist eine kleine funktion, die dir die daten per zeiger an main übergibt
    {
    cout<<"Hoehe eingeben :";cin>>*h;
    cout<<"Breite eingeben :";cin>>*b;     
    }
    

    wenn du nicht mit klarkommst frag nach 🙂


Anmelden zum Antworten