For-Schleife soll warten



  • padreigh schrieb:

    int potenz = 501;
    

    Uih, der Trick eröffnet sich aber spät.

    Solche Tricks sind doch nichts wert. Warum nicht einfach hinschreiben, was man macht?

    Vielleicht hast Du eine Continuephobie, weil Du es nicht richtig liest. Es heißt nicht "Nochmal von vorn versuchen", sondern es heißt "Diesen Schleifendurchlauf abbrechen."



  • padreigh schrieb:

    Mir pers. gefallen unnötig lange Blöcke nicht. Dein for (;;) { /* ... */ } enthält Zeug das IMMER ausgeführt wird - warum nuss das dann mit in den Block? Dann lieber eine kurze Schleife mit dem nötigstens.

    Das AUslagern der frage() war offensichtlich ein Fehler. Bleiben wir bei der Ur-Version.



  • Wie gesagt.

    int main()
    {
        srand(time(0));
        int punkte=0;
        while(punkte<100){
            int basis=rand()%10;
            int exponent=rand()%10;
    		if(basis!=0 || exponent!=0) {
    			int potenz=pow(basis,exponent);
    			if(potenz<=500) {
    				cout<<basis<<'^'<<exponent<<'=';
    				int tip;
    				cin>>tip;
    				if(tip==potenz){
    					cout<<"richtig!\n";
    					++punkte;
    				}
    				else{
    					cout<<"falsch!\n";
    					punkte/=2;
    				}
    				cout<<"Punkte: "<<punkte<<'\n';
    				cout<<"\n\n\n\n\n";
    			}
    		}
        }
        cout<<"Gewonnen!\n";
        return 0;
    }
    


  • volkard schrieb:

    Solche Tricks sind doch nichts wert. Warum nicht einfach hinschreiben, was man macht?

    Hinschreiben, man würde für immer schleifen drehen oder die punkte-schleife für was anderes nehmen ist auch nicht hinschreiben was man macht.



  • Funktioniert aber immer noch, wenn ich alle Potenzen größer als 1000 ausschließen will :p

    Edit: Zu deinem Code: Pack das mal noch in ne Klasse in nen Namespace in nen Namespace...



  • Schwierigkeiten beim Refactoring weisen nicht auf guten Code hin.



  • Michael E. schrieb:

    Funktioniert aber immer noch, wenn ich alle Potenzen größer als 1000 ausschließen will :p

    😕

    Edit: Zu deinem Code: Pack das mal noch in ne Klasse in nen Namespace in nen Namespace...

    Rückst du die ein? Sieht doch dumm aus, wenn eine Funktion schon zweimal eingerückt ist.



  • Mis2com.. schrieb:

    Michael E. schrieb:

    Funktioniert aber immer noch, wenn ich alle Potenzen größer als 1000 ausschließen will :p

    😕

    Wenn du die Grenze 500 ändern willst, musst du das nun an zwei Stellen im Code tun.

    Edit: Zu deinem Code: Pack das mal noch in ne Klasse in nen Namespace in nen Namespace...

    Rückst du die ein? Sieht doch dumm aus, wenn eine Funktion schon zweimal eingerückt ist.

    ...



  • Michael E. schrieb:

    Mis2com.. schrieb:

    Michael E. schrieb:

    Funktioniert aber immer noch, wenn ich alle Potenzen größer als 1000 ausschließen will :p

    😕

    Wenn du die Grenze 500 ändern willst, musst du das nun an zwei Stellen im Code tun.

    Also ich hab nur volkards Code umgestellt und bin nicht padreigh.



  • Ich habe bemerkt, daß ich die Zweierpotenzen auswendig kann, und ich sie nicht mehr gefragt werden möchte, außer wenn der Exponent durch 2 oder 3 teilbar ist, denn das festigt die Vierer- und Achterpotenzen.

    Weitere Wünsche werden folgen, die gemeinerweise je nach Schüler an- oder ausgeschaltet werden können.

    Und die Obergrenze soll wandern. Ich denke an 500 solange punkte<25, an 5000 wenn punkte>75 und dazwischen geradlinig steigend. Aber das muß ausprobiert werden. Kann auch sein, daß die flexible Obergrenze störend ist.

    Die Ur-Version ist gut wartbar, alles schon ausprobiert.



  • Ich habe bemert, dass Schüler lieber eine grafische GUI wollen und keine Konsole.



  • Mis2com.. schrieb:

    Ich habe bemert, dass Schüler lieber eine grafische GUI wollen und keine Konsole.

    Kann ich nicht bestätigen.



  • Die Bedingungen für eine gültige Aufgabe sollen beim Programmstart zusammengestellt werden können. :p


Anmelden zum Antworten