Anfängerprobleme - Schleife und Co



  • Hab den Code ein wenig aufgeräumt.

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
    //Variablen so spät wie möglich anlegen
    	cout << "\n* * * KURSTABELLE Euro - US-$ * * *\n\n";
    	cout << "\nBitte den Preis von einem Euro in US-$ eingeben: ";
    	double kurs;
    	cin >> kurs;
    
    	cout << "\nBitte die Obergrenze für Euro eingeben: ";
    	long maxEuro;
    	cin >> maxEuro;
    
    //kein endl, wenn '\n' voll reicht. 
    	cout << '\n';
    	cout << setw(12) << "Euro" << setw(20) << "US-$" << "\t\tKurs: " << kurs << "\n\n";
    
    	cout << fixed << setprecision(2);
    
    	cout << '\n';
    
    //Schleifen ohne Schmerzen
    	cout << setw(12) << 1 << setw(20) << kurs << '\n';
    //Schleifenvariablen schleifenlokal
    	for(long step=1; step<=maxEuro; step*= 10)
    //Triviale Optimierungen ruhig dem Compiler zumuten
    		for(long euro = 2*step; euro <= 10*step && euro <= maxEuro; euro+=step)
    			cout << setw(12) << euro << setw(20) << euro* kurs << '\n';
    }
    

    Oder ganz im Sinne von P&P, aber mit Restlesbarkeit

    for(long euro = 1,step=1,upper=10; euro <= maxEuro; euro==upper&&(step*=10,upper=10*step),euro+=step)
    		cout << setw(12) << euro << setw(20) << euro* kurs << '\n';
    


  • Also das mit der veränderten Ausgabe hat schon einmal geklappt, danke schon einmal dafür.
    Allerdings ergibt das für mich momentan noch kein Sinn. Und den Logikfehler (bei mir) finde ich momentan auch noch nicht.
    for( lower=1, step=1; lower <= maxEuro; step*= 10, lower = 2*step)
    D.h. im ersten Durchgang:
    step = 1, lower =1,
    Nach dem 2.:
    step = 10, lower= 20
    step = 100, lower= 200
    step = 1000 lower= 2000
    usw.
    Was sorgt nun bei der Ausgabe dafür, dass 10,20,30 ausgegeben wird und nicht in der oben angegebenen schrittweise?

    Ich danke euch schon einmal für eure großzügige Hilfe, vermutlich werdet ihr mich in Zukunft nun öfter sehen.

    Also das Buch fand ich zu Anfang ziemlich gut, allerdings scheinen mir die Aufgaben im Gegensatz zu den leichten Erklärungen ziemlich schwer. Gefühlt wird einem also 1+1 erklärt und anschließend nach der Wurzel aus 231546812 gefragt 😃
    Auch saß ich schon einmal eine Stunde am verzweifeln am Anfang des Buches, indem es void main() hieß... Als Anfänger steht man da natürlich erst einmal auf dem Schlauch.
    Das Problem ist, das es so viele verschiedene Buchvorschläge gibt und jeder was anderes behauptet. Vermutlich werde ich aber wirklich umsteigen müssen, glücklicherweise bin ich erst bei S. 160 angelangt, sodass ich nicht allzu viel Wiederholung im neuen Buch haben sollte.



  • Chelikoo schrieb:

    Das Problem ist, das es so viele verschiedene Buchvorschläge gibt und jeder was anderes behauptet. Vermutlich werde ich aber wirklich umsteigen müssen, glücklicherweise bin ich erst bei S. 160 angelangt, sodass ich nicht allzu viel Wiederholung im neuen Buch haben sollte.

    Achte nicht auf Amazon-Rezensionen und nicht auf Bewertungen von Anfängern.



  • Chelikoo schrieb:

    Was sorgt nun bei der Ausgabe dafür, dass 10,20,30 ausgegeben wird und nicht in der oben angegebenen schrittweise?

    Also mit meinem Bugfix von 21:33:13 Uhr hats bei mir wunderbar geklappt.



  • Ok ich glaube ich steige so langsam durch die Funktion durch.
    Danke euch dafür!

    Werde mir vermutlich dann als nächstes erst einmal ein neues Buch anschaffen.

    Kleine Frage am Rande: Habe versucht mich anzumelden, Capcha-code falsch eingegeben und nun ist e-mail adresse und benutzername belegt... e-mail ist nicht angekommen.



  • Chelikoo schrieb:

    Was sorgt nun bei der Ausgabe dafür, dass 10,20,30 ausgegeben wird und nicht in der oben angegebenen schrittweise?

    Hallo Chelikoo,

    in dem Code stehen 2 Schleifen!
    - eine äußere Schleife: Bestimmt lower, upper und step
    - eine innere Schleife: Gibt von lower bis upper alles mit Schrittweite step aus. Und dort steht:

    euro+=step
    


  • Danke DJohn, gerade diesen Schritt hatte ich erst einmal auch nicht beachtet, erscheint mir jetzt aber - endlich - logisch.


  • Mod

    Chelikoo1 schrieb:

    Kleine Frage am Rande: Habe versucht mich anzumelden, Capcha-code falsch eingegeben und nun ist e-mail adresse und benutzername belegt... e-mail ist nicht angekommen.

    Wende dich am Besten an das Forentechnikforum oder benutze das Kontaktformular (einer von den Links rechts oben).


  • Mod

    Wende dich am Besten an das Forentechnikforum

    Du Kasper, du.



  • Dieter Baer "Schrödinger programmiert C++" von Gallileo kannste auch voll vergessen, ich hätte mit viel Geld gespart hätte ich das vorher gewusst, hab halt leider nich reingeschaut 😞 Ich kann die aber keinen Tip geben welches gut ist (hab mir kein neues geholt mach jetz alles mit tut´s aus´m netz die sind gratis:))


Anmelden zum Antworten