Verständnisproblem Modulo



  • Hi,
    Das ist das eine Lösung aus dem Buch "C++ für Spieleprogrammierer", Seite 89.
    Hierbei soll eine Flaeche aus Buchstaben gezechnet werden, unter der Vorraussetzung, dass die Eingaben: hoehe und breite, beide aus ungraden Zahlen bestehen, damit die Mitte ermittelt werden kann.

    Was ich dabei nicht verstehe, ist weshalb Modulo beim Auswahlverfahren einen Sinn ergibt.

    Im Code steht zb: hoehe%2 == 0.

    Das bedeutet doch, dass er nur die Schleife ausfuehren soll, wenn ein rest 0 entsteht. Bei ungraden Zahlen entsteht durch 2 geteilt aber doch immer ein Rest.

    Bitte um Erklaerung

    #include <iostream>
    
    using namespace std;
    
    int main ()
    
    {
    
        int breite, hoehe;
    
        do
        {
        	cout << "Da sind Sie ja wieder, Meister." << endl;
        	cout << "Sie wissen ja, wie es geht..\nHoehe:" << endl;
        	cin >> hoehe;
        	cout << "\nBreite:" << endl;
        	cin >> breite;
        } while ((breite%2 == 0 ) || (hoehe%2 == 0));
    
        for (int y=0; y<hoehe; y++)
        {
        	for (int x=0; x<breite; x++)
        	{   		
    
        		if ((x == breite / 2 ) || (y == hoehe / 2))
                {
                 	cout << "-";
                }
                else 
                {
                	cout << "X";
                }            
        	} cout << endl;
        }
    
    return 0;
    }
    


  • Nein, da steht, dass die Eingabe sooft wiederholt wird, wie der Wert nicht stimmt. (Eigentlich sollte da auch eine Überprüfung des Streams rein, aber naja).



  • kamelkacke schrieb:

    Das bedeutet doch, dass er nur die Schleife ausfuehren soll, wenn ein rest 0 entsteht. Bei ungraden Zahlen entsteht durch 2 geteilt aber doch immer ein Rest.

    Genau. Der Benutzer soll zwei ungerade Zahlen eingeben. Wenn er das nicht tut, wird die Schleife erneut ausgeführt.

    Apropos ausführen: hast du den Code selbst mal ausgeführt und probiert, was passiert, wenn du keine, eine oder zwei ungerade Zahlen eingibst?


  • Mod

    kamelkacke schrieb:

    Das bedeutet doch, dass er nur die Schleife ausfuehren soll, wenn ein rest 0 entsteht. Bei ungraden Zahlen entsteht durch 2 geteilt aber doch immer ein Rest.

    Eben. Das heißt ,wenn die Zahlen nicht beide ungerade sind, dann wird die Schleife weiter ausgeführt. Da die Schleife nach neuen Zahlen verlangt, ist das doch genau das, was gewünscht ist, denn nur mit ungeraden Zahlen kann fortgefahren werden.

    edit: Nur wenige Sekunden später dran und gleich zwei gleichlautende Antworten vor mir...



  • Achsooo!! Danke!!


Anmelden zum Antworten