Announcement

Collapse
No announcement yet.

Verzweigungen, Schleifen und Felder in C++

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verzweigungen, Schleifen und Felder in C++

    Schreiben Sie das folgende C++-Programm „AusgabeGeradeZahlen“: Der Nutzer wird auffordert, eine
    Zahl zwischen 4 und 12 einzugeben. Wenn die eingegebene Zahl nicht zwischen 4 und 12 liegt, wird der
    Nutzer aufgefordert, diese Zahl erneut einzugeben. Verwenden Sie hierzu eine do-while-Schleife. Dann
    wird der Nutzer aufgefordert, eine zweite Zahl einzugeben, die mindestens um 3 größer sein muss als
    die erste Zahl und höchstens 30 betragen darf.
    Es sollen dann alle geraden Zahlen zwischen diesen beiden Zahlen ausgegeben werden. Der Benutzer
    entscheidet, ob diese Zahlen vorwärts oder rückwärts ausgegeben werden.
    So können Sie C++ überprüfen lassen, ob eine Zahl gerade oder ungerade ist: 13%2 liefert den Wert 1.
    Dies ist eine Modulo-Division. Es wird der Rest der Division 13 geteilt durch 2 ermittelt. Wenn der Rest 1
    ist, ist die Zahl ungerade, wenn der Rest 0 ist, ist die Zahl gerade.
    So erhöhen Sie den Wert der Variablen i um 1:
    So erhöhen Sie den Wert der Variablen i um 2:
    i++;
    i = i + 2;oder i += 2;
    Schreiben Sie das folgende C++-Programm „Umsatzzahlen“: Der Nutzer wird auffordert, zwölf
    Umsatzzahlen einzugeben. Hier ist es nicht sinnvoll, zwölf Variablen von umsatz1 bis umsatz2 zu
    deklarieren. Daher sollen Sie dieses Feld deklarieren: int umsatz[12]; Der erste Wert ist dann in
    umsatz[0] gespeichert und der letzte Wert in umsatz[11]. So kann das Einlesen der Umsatzzahlen
    erfolgen:
    for(i = 0; i<12;i++)
    {
    cout<<"\nGeben Sie den Umsatz für den "<<i+1<<".ten Monat ein: ";
    cin>>Umsatz[i];
    }
    Sie sollen dann den mittleren Umsatz ermitteln und dann zunächst ausgeben, wie viele der zwölf
    Umsatzzahlen über dem Mittelwert liegen und dann diese Umsatzzahlen ausgeben.
    Dann sollen Sie alle Umsatzzahlen sortiert ausgeben. Als erstes soll die größte Umsatzzahl ausgegeben
    werden. So gehen Sie beim Sortieren vor. Sie vergleichen die letzte Umsatzzahl mit der vorletzten, ist die
    letzte Umsatzzahl die größere, tauschen Sie diese beiden Zahlen. Überlegen Sie sich, wie Sie zwei Zahlen
    tauschen können, ohne eine der beiden zu überschreiben und damit zu löschen. Anschließend
    vergleichen Sie die vorletzte Umsatzzahl mit der drittletzten Umsatzzahl und tauchen die Zahlen
    gegebenenfalls. So fahren Sie fort, bis die größte Umsatzzahl ganz nach oben „gesprudelt“ ist. Die
    übrigen elf Umsatzzahlen sind dann noch nicht vollständig sortiert. Sie müssen diesen Algorithmus also
    erneut anwenden und so dafür sorgen, dass die zweitgrößte Zahl an die zweite Stelle hochsprudelt und
    so weiter bis alle Zahlen sortiert sind.

    Ich verstehe es nicht und hoffe auf eure Hilfe.
    Zuletzt editiert von Ana448; 12.12.2019, 15:14.

  • #2
    Was verstehst du nicht?
    If in C++
    https://www.w3schools.com/cpp/cpp_conditions.asp
    Schleifen
    https://www.w3schools.com/cpp/cpp_while_loop.asp
    Variablen
    https://de.wikibooks.org/wiki/C%2B%2...und_Konstanten

    Christian

    Comment


    • Ana448
      Ana448 commented
      Editing a comment
      Ich verstehe nicht, wie ich genau die Aufgabe erstellen soll.
      Ich habe überhaupt keine Ahnung und werde mich freuen, wenn jemand mir hilft.

  • #3
    Erstelle hier keinen Kommentar zu einem Beitrag, die Antwort erkennt man nicht.

    Der Nutzer wird auffordert, eine
    Zahl zwischen 4 und 12 einzugeben. Wenn die eingegebene Zahl nicht zwischen 4 und 12 liegt, wird der
    Nutzer aufgefordert, diese Zahl erneut einzugeben. Verwenden Sie hierzu eine do-while-Schleife.
    Das sollte machbar sein, die Schleife, darin ein if und ein paar Variablen




    Christian

    Comment


    • #4
      So weit bin ich nicht..

      int main()
      {
      int a;
      cout << "Geben Sie eine Zahl zwischen 4 und 12 ein: ";

      do {
      cin >> a;
      if(a < 4 || a > 12)
      cout<< "Versuchen Sie es erneut, die Zahl muss zwischen 4 und 12 liegen: ";
      }

      while(a < 4 || a > 12);


      return 0;
      }

      Comment


      • #5
        if(a < 4 || a > 12)
        {
        cout<< "Versuchen Sie es erneut, die Zahl muss zwischen 4 und 12 liegen: ";
        }


        Wie lautet die Fehlermeldung?
        Christian

        Comment


        • Ana448
          Ana448 commented
          Editing a comment
          Mein Compiler findet keine Fehler darin.

      • #6
        Ich weiß nicht, was als nächstes kommt..

        Comment


        • #7
          Das
          Dann
          wird der Nutzer aufgefordert, eine zweite Zahl einzugeben, die mindestens um 3 größer sein muss als
          die erste Zahl und höchstens 30 betragen darf.
          int b;
          ....
          wenn (b+3<a||b>30

          So ich mache jetzt erstmal Feierabend.....
          Christian

          Comment


          • #8
            Danke, Christian!

            Comment


            • #9
              Dann kommt
              Es sollen dann alle geraden Zahlen zwischen diesen beiden Zahlen ausgegeben werden. Der Benutzer
              entscheidet, ob diese Zahlen vorwärts oder rückwärts ausgegeben werden.
              Als erstes wieder eine Abfrage -> "Gib 0 für vorwärts oder 1 für rückwärts ein
              wieder eine Schleife die prüft, ob 0 oder 1 eingegeben wurde
              Dann hast du 3 Variablen
              a -> Startwert aus erster Eingabe
              b -> Endewert aus zweiter Eingabe
              c -> 0 oder 1 ob vor- oder rückwärts

              Dann kommt ein if, welches enscheidet ob vor- ode rrückwärts

              wenn c==1 dann
              {
              for(int i=a;a<b;i++)
              {
              wenn i%2==0 dann
              {
              cout Zahl ist gerade
              }
              }
              }
              sonst
              {
              }


              Christian

              Comment


              • Ana448
                Ana448 commented
                Editing a comment
                Was habe ich falsch gemacht?

            • #10
              So habe ich das gemacht.


              int main()
              {
              int a, b, c;
              cout << "Geben Sie eine Zahl zwischen 4 und 12 ein: ";

              do {
              cin >> a;
              if(a < 4 || a > 12)
              cout << "Versuchen Sie es erneut, die Zahl muss zwischen 4 und 12 liegen: ";
              }

              while(a < 4 || a > 12);

              if(b+3 < a || b > 30 )

              cout << "Geben Sie 0 für vorwärts oder 1 für rückwärts ein: ";
              if(c == 1)
              {
              for(int i=a;a<b;i++)
              {
              if(i%2==0)
              {
              cout << "Zahl ist gerade";
              }
              }
              }
              {
              }
              return 0;
              }

              Und habe 2 Fehler:
              16:17:27 **** Incremental Build of configuration Debug for project Test2 ****
              make all
              Building file: ../src/Test2.cpp
              Invoking: GCC C++ Compiler
              g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Test2.d" -MT"src/Test2.o" -o "src/Test2.o" "../src/Test2.cpp"
              ../src/Test2.cpp: In Funktion »int main()«:
              ../src/Test2.cpp:25:6: Warnung: »b« könnte in dieser Funktion uninitialisiert verwendet werden [-Wmaybe-uninitialized]
              25 | if(b+3 < a || b > 30 )
              | ~^~
              ../src/Test2.cpp:28:2: Warnung: »c« könnte in dieser Funktion uninitialisiert verwendet werden [-Wmaybe-uninitialized]
              28 | if(c == 1)
              | ^~
              Finished building: ../src/Test2.cpp

              Building target: Test2
              Invoking: GCC C++ Linker
              g++ -o "Test2" ./src/Test2.o
              Finished building target: Test2


              16:17:27 Build Failed. 2 errors, 0 warnings. (took 727ms)
              Zuletzt editiert von Christian Marquardt; 12.12.2019, 17:56.

              Comment


              • #11
                Sory, aber bisschen mitdenken
                if(b+3 < a || b > 30 ) -> was soll das bewirken?
                Ich hatte da 3 Punkte gesetzt.
                Das bedeutete, wieder eine Variable, cin abfragen, do/while , if Wie gehabt, bloß mit anderer Bedingung
                Habe dir nur die Bedingung hingeschrieben

                Des Weiteren fehlt beim folgenden Abschnitt
                - überhaupt das einlesen der Variablen c, die Prüfung, analog zu a und b
                - der Else-Zweig -> s.o. sonst (Ausgabe ist nicht gerade) oder entfernen der Klammern
                Christian

                Comment


                • Ana448
                  Ana448 commented
                  Editing a comment
                  Sorry, ich bin einfach zu dumm dafür.
                  Den ganzen Tag suche ich die Lösung, aber leider klappt es nicht.
                  Danke für deine Bemühung!

              • #12
                https://www.stacklounge.de/5346/verz...nd-felder-in-c
                Christian

                Comment

                Working...
                X