for mit vielfachenüberprüfung



  • ich wusste nicht, wie ich den beitrag anders nennen sollte....

    hier mein code

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int loop;
    	int quadr = 0;
    
    	for(loop = 0; loop <= 100; ++loop)
    	{
    	quadr = loop * loop;
    	cout << "Das Quadrat von: " << loop << " ist: " << quadr << endl;
    	}
    
    	return 0;
    
    }
    

    ich will, dass der in der for-schleige überprüft, ob quadr ein vielfaches von 10 ist und wenn dem so ist, ich eine ausgabe bekomme dir mir sagt: "Press enter to continue..."

    1. ich weis nicht, wie ich es anstellen kann, dass ich enter drücke und er dann weitermacht.
      ich hab es schon so versucht
    int a;
    cin >> a;
    

    nun leider geht des net, da dieser code ja eine eingabe in a erwartet und ich eigentlich nur enter drücken will.

    ich habe versucht, per if-anweisung eine überprüfung der variable quadr einzubauen. sa dann so aus:

    for(loop = 0; loop <= 100; ++loop) 
        { 
        quadr = loop * loop; 
        if(quadr%10)
        {
             cout << "Press Enter to continue..."
        }
        cout << "Das Quadrat von: " << loop << " ist: " << quadr << endl; 
        }
    

    da macht er es aber andersrum... er schreibt vor jede cout-anweisung " Press Enter to continnue...", nur da, wo quadr ein vielfaches von 10 ist, schreibt er es nicht davor.

    hoffe auf antworten.

    thx Spyro



  • Spyro schrieb:

    da macht er es aber andersrum... er schreibt vor jede cout-anweisung " Press Enter to continnue...", nur da, wo quadr ein vielfaches von 10 ist, schreibt er es nicht davor.

    Dann negiere das ganze doch einfach

    if(!(quadr%10))
    


  • Spyro schrieb:

    int a;
    cin >> a;
    

    versuche es mal mit:

    char tmp[100];
    cin.getline(tmp,100);
    


  • ok danke dir, hat beides einwandfrei funktioniert.
    könntest du mir nur noch die funktionsweise erklären !?
    ich blick des nämlich nicht ganz...

    eigentlich müsste er doch schauen, ob quadr ein vielfaches von 10 ist mit der anweisung

    if(quadr%10)
    

    und wenn dies erfüllt ist, dann gibt er erst den anweisungsblock wieder.... wieso aber ist es genau andersrum ??

    und des andere..

    char tmp[100]
    

    ist klar
    aber was hat "getline" zu bedeuten ?

    ich hoffe mal des kommt net zu dumm gefragt rüber 🙂

    Spyro



  • if (quadr%10)
    

    14 % 10 ist 4. 4 evaluiert zu true.
    20 % 10 ist 0. 0 evaluiert zu false.
    Du willst bei 20 % 10 aber ein true erreichen. Alles klar?
    Du könntest statt

    if (!(quadr%10))
    

    genausogut

    if (quadr%10 == 0)
    

    schreiben.

    "Press enter to continue":

    cout << "Press enter to continue...";
    cin.get();
    


  • Der erste Punkt wurde ja bereits erklaert.

    Ich benutze getline anstelle von get, da sonst wenn du eine Eigabe wie:
    asdfg'\n'
    hast, gleich mehrere get Aufrufe übersprungen werden.

    getline(...) liest die ganze Zeile ein und schreibt sie in nach tmp. Im gengensatz zu cin>> liest es auch Leerzeichen mit ein.



  • ok danke @ davie für die erklärung. habs kapiert 🙂
    edit: *gg* auch an dich Entyl_Sa 😃

    Gruß Spyro


Anmelden zum Antworten