C++ Anfänger - Wiederholung bzw. Schleife



  • Hallo Community,
    ich bin ein Neuling in C++ und versuche hin und wieder mal das was ich gelernt habe umzusetzen.
    Bis jetzt klappt es ganz gut, nur wie kann man es ein eine Schleife setzen.
    Ich möchte dass wenn "c" ausgegeben wird wieder erneut die Zahlen eingeben kann.
    Außerdem möchte ich gerne Wissen ob meine Kommentare richtig sind.

    mit freundlichen Grüßen
    Danny Bischofs

    #include <iostream.h>
    
    int Add (int a, int b)									//Integer a und b werden hinzugefuegt ?
    {
    
    	return (a+b)										// a+b) wird als Ergebnis ausgegeben
    ;}
    
    int main()
    
    {
    	int a, b, c;										//Deklariert (a),(b) und (c) ? ? ?
    	cout<< "Bitte geben Sie eine Zahl ein:\n";
    	cin >> a;											//Die erste Zahl (a) wird eingegeben
    	cout<< "Bitte gebe eine weitere Zahl ein:\n";
    	cin >> b;											//Die zweite Zahl (b) wird eingegeben
    	c = Add(a,b)										//Das Ergebnis (c) ist gleich int Add , da return (a+b)
    ;	cout<< "Das Ergebnis lautet:\n"<< c <<"\n\n\n";
    
    	return 0;
    
    }
    


  • Da solltest du eine do-while-Schleife um das Ganze basteln, die durch eine mit true initialisierte bool-Variable bedingt ist (bGoOn oder so). Und am Ende der Schleife fragst du den Benutzer, ob er nochmal Zahlen eingeben will. Will er das, setzt du die bool-Variable auf true, ansonsten halt auf false, so dass die Schleife abgebrochen wird.



  • //Integer a und b werden hinzugefuegt ?

    => Sie sind eher Parameter (der Funktion). Der Kommentar ist aber unnötig, du weißt schließlich, dass in der Parameterliste Parameter stehen und dann in der Funktion zur Verfügung stehen.

    // a+b) wird als Ergebnis ausgegeben

    => Eher: wird (von der Funktion) zurückgegeben. Imho auch unnötig.

    //Deklariert (a),(b) und (c) ? ? ?

    => Absolut unnötig! Der Kommentar bietet nichts, was man nicht sofort sieht (der Begriff Deklaration ist aber richtig).

    //Die erste Zahl (a) wird eingegeben

    => Wer cin kennt, braucht diesen Kommentar ebenfalls nicht...

    //Die zweite Zahl (b) wird eingegeben

    => ...

    //Das Ergebnis (c) ist gleich int Add , da return (a+b)

    => Hm, missverständlich ausgedrückt. Hört sich irgendwie nach einem Vergleich an, es passiert ja aber eine Zuweisung. Außerdem wird c nicht auf "int Add" gesetzt, sondern auf die Rückgabe der Funktion (die in diesem Fall der Summe von a und b entspricht).

    Dass du kommentieren willst, ist löblich. Du solltest es aber nicht übertreiben und nur kommentieren, wenn eine Stelle nicht direkt verständlich ist, z.B. weil da ein etwas komplexerer Ausdruck steht. Dann macht ein Kommentar wirklich Sinn. Du als Anfänger kannst auch ruhig kommentieren, was bestimmte Schlüsselwörter oder Funktionen machen, einfach um dir selbst beim Lernen zu helfen. Du solltest dir halt nur von Anfang an die richtigen Begrifflichkeiten angewöhnen. 🙂

    Und noch ein Tipp: schreibe Kommentare immer so, dass ein fremder sie versteht. Dann ist sichergestellt, dass irgendwann mal ein Arbeitskollege was damit anfangen kann - und dass du selbst sie in einigen Monaten überhaupt noch verstehst!



  • Erstmal danke für deine Antwort.
    Für den ersten Post den du verfasst hast muss ich muss ich wahrscheinlich noch einige Kapitel weiter in C++ gehen, so weit bin ich noch nicht.

    Die Kommentare waren auch nicht für mich gedacht sondern eher damit ich versteh was in den jeweiligen Zeilen passiert.

    mfG



  • dannybdanny schrieb:

    Für den ersten Post den du verfasst hast muss ich muss ich wahrscheinlich noch einige Kapitel weiter in C++ gehen, so weit bin ich noch nicht.

    Klar, lies einfach weiter in deinem Buch und probier ein wenig rum. Schleifen sind natürlich sehr wichtig und werden sicher früh im Buch behandelt.

    Schon mal ein kleines Beispiel:

    #include <iostream>
    #include <string>
    
    int main()
    {
    	bool bWeitermachen=true;
    	do {
    		std::cout << "Hallo Welt!" << std::endl;
    		std::cout << "Abbrechen? (j/n)";
    		std::string str;
    		std::cin >> str;
    		if(str=="j") {
    			bWeitermachen=false;
    		}
    	}while(bWeitermachen);
    }
    

    Wenn du willst, dann probier diesen Code aus, versuche ihn zu verstehen und baue die Grundidee in deinen Code ein.

    dannybdanny schrieb:

    Die Kommentare waren auch nicht für mich gedacht sondern eher damit ich versteh was in den jeweiligen Zeilen passiert.

    Na dann sind sie ja irgendwie doch für dich! :p



  • while(true)
        {
            std::cout << "Hallo Welt!" << std::endl;
            std::cout << "Abbrechen? (j/n)";
            std::string str;
            std::cin >> str;
            if(str=="j")
                break;
        }
    

    Lieber so, die bool-Variable bringt doch hier nichts 😉



  • Klar, hast Recht. Wobei ich es ganz nett fand, ihm als Anfänger die do-while-Variante zu zeigen.

    Oder gleich so:

    std::string str("");
    	for(;str!="j";) {
    		std::cout << "Hallo Welt!" << std::endl;
    		std::cout << "Abbrechen? (j/n)";
    		std::cin >> str;
    	}
    

    😃

    @dannybdanny: Bitte ignoriere den Code hier einfach! Ich mach nur Spaß und will dich nicht verwirren. 😉 Mein erster und Icematix' Vorschlag sind aber einen Blick wert.



  • Danke für die Antworten, ich werde einfach im buch weiterlesen.
    Hab nun aber noch eine Frage.
    Ich habe Microsoft Visual C++ und wenn ich die .exe kompiliere und dann z.B vom Desktop aus starten will, dann schließt sich die Konsolenanwendung wenn ich das Ergebnis haben möchte (d.h nachdem ich zum 2ten mal Enter drücke)

    mfG



  • dannybdanny schrieb:

    Danke für die Antworten, ich werde einfach im buch weiterlesen.
    Hab nun aber noch eine Frage.
    Ich habe Microsoft Visual C++ und wenn ich die .exe kompiliere und dann z.B vom Desktop aus starten will, dann schließt sich die Konsolenanwendung wenn ich das Ergebnis haben möchte (d.h nachdem ich zum 2ten mal Enter drücke)

    mfG

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-797103.html


Anmelden zum Antworten