Programmablauf



  • Hallo zusammen

    ich soll die Bildschirmausgabe für folgendes Programm beschreiben, ich werde daraus nicht schlau.

    #include <iostream>
    using namespace std;

    void main()
    { int start, ende, i;

    cout << endl <<"Startwert eingeben: ";
    cin >> start;

    cout << endl <<"Endwert eingeben: ";
    cin >> ende;

    for (i=ende; i>=start;i--)
    {
    if(i % 12 == 0)
    {
    cout << i <<"\n";
    }
    }
    }
    }

    So wie ich das sehe, gibt dieses Programm nur folgende Anzeige aus.

    Startwert eingeben:

    Endwert eingeben;
    Drücken Sie eine beliebige Taste...

    Irgendwas scheint doch da zu fehlen, das Programm macht doch praktisch nichts, oder?
    Was macht den eigentlich dieses % (Modulo?) eigentlich genau, dass habe ich immer noch nicht wirklich geschnallt.

    Grüße und Danke

    Alex



  • Das Programm gibt alle Zahlen im angegebenen Bereich aus, die durch 12 teilbar sind. Und zwar sortiert von groß nach klein.



  • Ah, wenn ich das Programm so abtippe kommt bei mir die beschriebene Ausgabe. Woran könnte das liegen? Was macht % genau?

    Gruß

    Alex h



  • vlt liegts daran, dass zwischen start und ende kein vielfaches von 12 liegt.

    modulo berechnet den rest einer ganzzahldivision.
    25/12 = 2 rest 1 -> 25%12 = 1



  • Der Startwert liegt bei 5 und der Endwert bei 100!?

    Gruß



  • Abgesehen davon, dass es eine geschweifte Klammer zu am ende zu viel gibt und main void zurück gibt, stimmt der code!



  • Was ist an void main() falsch?
    Bisher haben wir alle unsere Programme so angefangen.
    Was meint

    (i=ende;i>=start;i--)
    

    Ich dachte i wird gleich ende, also 100 in meinem Fall, solange i größer oder gleich start ist, wird eins nach unten gezählt, also bis 5.

    Was macht dann

    for(i % 12 == 0)
    {
        cout<<i<<"\n";
    }
    

    Wenn i mit einem Restwert gleich 0 durch 12 geteilt werden kann, wird i ausgegeben und eine neue Zeile angefangen, oder?

    Wäre super wenn mir jemand sagen könnte ob ich das jetzt richtig verstanden habe!

    Dann muss ich nur noch dahinter kommen, weshalb das Programm bei mir nicht laufen wollte.

    Gruß

    Alex



  • alex h schrieb:

    Was ist an void main() falsch?

    ersetz das void main() durch int main() und lass den rest so - der standard schreibt den rückgabetyp int vor - und sagt auch, dass man (ausnahmsweise) kein return braucht.

    alex h schrieb:

    for(i = ende;i >= start; i--)
    

    Ich dachte i wird gleich ende, also 100 in meinem Fall, solange i größer oder gleich start ist, wird eins nach unten gezählt, also bis 5.

    Stimmt

    alex h schrieb:

    Was macht dann

    for(i % 12 == 0)
    {
        cout<<i<<"\n";
    }
    

    das macht so gar nichts - wenn du allerdings for mit if ersetzt, dann macht es das, was es soll - gucken, ob i ein vielfaches von 12 ist (weil beim teilen der entstehende rest 0 ist).
    Und dann stimmt auch das:

    alex h schrieb:

    Wenn i mit einem Restwert gleich 0 durch 12 geteilt werden kann, wird i ausgegeben und eine neue Zeile angefangen, oder?

    alex h schrieb:

    Wäre super wenn mir jemand sagen könnte ob ich das jetzt richtig verstanden habe!

    Dann muss ich nur noch dahinter kommen, weshalb das Programm bei mir nicht laufen wollte.

    Ich hoffe, ich konnte dir dabei helfen, beides rauszufinden ^^

    bb


Anmelden zum Antworten