0 Daumen
909 Aufrufe

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: i++;
So erhöhen Sie den Wert der Variablen i um 2: 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 nicht, wie das aussehen soll und hoffe auf eure Hilfe.

von

1 Antwort

0 Daumen

Hallo Anastasia,

zunächst mal ist diese Aufgabe IMHO für Anfänger relativ ungeeignet und zeigt, dass der Dozent selber kaum Erfahrung mit C++ hat. Die korrekte Programmierung einer Eingabe mit Berücksichtigung aller Fehlerfälle ist durchaus anspruchsvoll. Die Vorgabe einer do-while-Schleife ist unsinnig. Und die Vorgabe bei der zweiten Aufgabe ein Array zu benutzen geht an jeder praktischen Anwendung von C++ vorbei !

Anbei mal ein Code-Schnipsel was die Aufgabestellung des Einlesens der Zahlen einigermaßen erfüllt:

#include <iostream>
#include <limits>

int eingabe_zahl(int von, int bis) {
    using namespace std;
    int zahl;
    bool ok = false;
    do {
        cout << "Geben Sie eine Zahl zwischen " << von << " bis " << bis << " ein: ";
        if( cin >> zahl && zahl >= von && zahl <= bis )
            ok = true;
        else
        {  // aufräumen!
            cin.clear();
            cin.ignore( std::numeric_limits< std::streamsize >::max(), '\n' ); // Zeile überspringen
            ok = false;
        }
    }
    while(!ok);
    return zahl; // alles gut
}

int main() {
    using namespace std;
    int zahl1 = eingabe_zahl(4, 12);
    int zahl2 = eingabe_zahl(zahl1+3, 30);
    // ... vorwärts oder rückwärts
    // ... Ausgabe der geraden Zahlen im Intervall [zahl1;zahl2]
    cout << "Intervall: [" << zahl1 << "; " << zahl2 << "]" << endl;
    return 0;
}

Sage mir bitte, in wie weit Du damit zurecht kommst und stelle möglichst konkrete Fragen.

Gruß Werner

von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community