Kann mir mal jemand helfen



  • Ich habe in dem Text wohl ein Fehler gemach ??????

    weiß jemand welchen ???? das ist er

    #include <iostream>
    #include <stdafx.h>
    using namespace std;

    int main()
    {
    int ersteZahl;
    int zweiteZahl;
    int ergebnis

    cout << "Bitte geben Sie die erste Zahl ein:";
    cin >> ersteZahl;

    cout << "Bitte geben Sie die zweite Zahl ein:";
    cin >> zweiteZahl;

    ergebnis = (ersteZahl + zweiteZahl);

    cout << "Die summe der beiden Zahlen ist: " << ergebnis << endl;
    system("PAUSE");

    return 0;
    }

    meinen Email ist www.mcpenner123@web.de
    das ist mein zweites programm

    danke

    tim (13)



  • #include <iostream> 
    using namespace std; 
    
    int main() 
    { 
    	int ersteZahl; 
    	int zweiteZahl; 
    	int ergebnis; 
    
    	cout << "Bitte geben Sie die erste Zahl ein:"; 
    	cin >> ersteZahl; 
    
    	cout << "Bitte geben Sie die zweite Zahl ein:"; 
    	cin >> zweiteZahl; 
    
    	ergebnis = (ersteZahl + zweiteZahl); 
    
    	cout << "Die summe der beiden Zahlen ist: " << ergebnis << endl; 
    
    	cin.get (); 
    	return 0; 
    }
    

    So ist es richtig 😉

    Du hast ein Semikolon bei Ergebnis vergessen. Außerdem konnte ich nicht stdafx.h öffnen, da dies nicht mehr dem C++ Standard entspricht.

    Nächste mal benutze einen Debugger und gebe uns die Fehlermeldungen mit "auf den Weg" 😃 .
    Ach ja und benutze nächstes Mal die C/C++ Code Tags!

    MfG
    Walnut_Burl



  • vielen vielen dank 😋 😋 😋 😋



  • Nicht ganz wenn ich es ausgeführt habe hatte sich das Fenster ohne weitere Kommentare geschlossen .
    Habe in aber dank deiner Hilfe gefunden jetzt geht auch mein 2 Projekt .
    Danke

    der ganze Code

    #include <iostream>
    using namespace std;

    int main()
    {
    int ersteZahl;
    int zweiteZahl;
    int ergebnis;

    cout << "Bitte geben Sie die erste Zahl ein:";
    cin >> ersteZahl;

    cout << "Bitte geben Sie die zweite Zahl ein:";
    cin >> zweiteZahl;

    ergebnis = (ersteZahl + zweiteZahl);

    cout << "Die summe der beiden Zahlen ist: " << ergebnis << endl;
    system("PAUSE");
    return 0;
    }



  • Gut das dein Projekt jetzt geht!

    Doch wie gesagt benutze am Besten C/C++ Tags (unter den Smileys), dann wird dein Code übersichtlicher.

    Und wenn du

    system ("PAUSE");
    

    gebrauchst muss dahinter kein

    return 0;
    

    mehr


  • Mod

    Walnut_Burl schrieb:

    Gut das dein Projekt jetzt geht!

    Doch wie gesagt benutze am Besten C/C++ Tags (unter den Smileys), dann wird dein Code übersichtlicher.

    Und wenn du

    system ("PAUSE");
    

    gebrauchst muss dahinter kein

    return 0;
    

    mehr

    😕 Kannst du mir mal erklären wo da der Zusammenhang sein soll?



  • SeppJ schrieb:

    Walnut_Burl schrieb:

    Gut das dein Projekt jetzt geht!

    Doch wie gesagt benutze am Besten C/C++ Tags (unter den Smileys), dann wird dein Code übersichtlicher.

    Und wenn du

    system ("PAUSE");
    

    gebrauchst muss dahinter kein

    return 0;
    

    mehr

    😕 Kannst du mir mal erklären wo da der Zusammenhang sein soll?

    Es ist ja eigentlich nach dem

    system ("PAUSE");
    

    nicht mehr nötig

    return 0;
    

    dahinter zu schreiben, da es an dem Laufzeitverhalten des Programms nichts mehr ändert.
    Klar eigentlich muss die main () Funktion natürlich einen Rückgabewert besitzen (sie ist ja vom Typ int).


  • Mod

    Walnut_Burl schrieb:

    Es ist ja eigentlich nach dem

    system ("PAUSE");
    

    nicht mehr nötig

    return 0;
    

    dahinter zu schreiben, da es an dem Laufzeitverhalten des Programms nichts mehr ändert.
    Klar eigentlich muss die main () Funktion natürlich einen Rückgabewert besitzen (sie ist ja vom Typ int).

    Und wenn das system ("PAUSE"); nicht dort stünde?

    Ok, ok, ich zieh dich gerade nur auf: Ich weiß, es gibt absolut keinen Zusammenhang zwischen den beiden Zeilen. Das return in main darf man immer weglassen und es wird in dem Fall immer 0 zurückgegeben, vollkommen egal was da vorher passiert. Ich wollte nur einmal sehen, welchen Grund du dir vorstellst, warum dies nicht so sein sollte. Da ich deine Erklärung aber nicht verstehe, weiß ich nicht was du dir dabei denkst und kläre dich hiermit über deinen Irrtum auf.



  • SeppJ schrieb:

    Walnut_Burl schrieb:

    Es ist ja eigentlich nach dem

    system ("PAUSE");
    

    nicht mehr nötig

    return 0;
    

    dahinter zu schreiben, da es an dem Laufzeitverhalten des Programms nichts mehr ändert.
    Klar eigentlich muss die main () Funktion natürlich einen Rückgabewert besitzen (sie ist ja vom Typ int).

    Und wenn das system ("PAUSE"); nicht dort stünde?

    Ok, ok, ich zieh dich gerade nur auf: Ich weiß, es gibt absolut keinen Zusammenhang zwischen den beiden Zeilen. Das return in main darf man immer weglassen und es wird in dem Fall immer 0 zurückgegeben, vollkommen egal was da vorher passiert. Ich wollte nur einmal sehen, welchen Grund du dir vorstellst, warum dies nicht so sein sollte. Da ich deine Erklärung aber nicht verstehe, weiß ich nicht was du dir dabei denkst und kläre dich hiermit über deinen Irrtum auf.

    Danke 😃



  • ja danke danke das ich euch weiter helfen konnte 🙂 🙂 🙂 🙂
    das

    system ("PAUSE");

    war abber nicht das gleiche wie

    cin.get ();

    oder ?????????????

    scheiße jetzt verusicherst du mich 🙂 🙂 🙂 🙂



  • cin.get();
    

    wartet einfach auf eine Eingabe, die man mit Enter beendet.

    system("pause");
    

    ...
    gib mal in die cmd "pause" ein 😉 Dann siehst du, was es bewirkt 🙂
    gruß,
    Finn



  • ya danke euch noch mal allen 🙂 🙂 🙂


  • Administrator

    Ich möchte mal dies hier noch hinsetzen:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    Vor allem auch der Hinweis ganz unten wegen system("pause") , sollte man nicht übersehen 😉

    Grüssli



  • Das return in main darf man immer weglassen und es wird in dem Fall immer 0 zurückgegeben, vollkommen egal was da vorher passiert.

    Das ist Unsinn.
    Das Verhalten,d.h. der Returnwert ist in diesem Fall undefiniert. Das ist nicht nur für main sondern für alle anderen returnierenden Funktionen ebenso. Die Compiler sind frei in ihrer Entscheidung,hier was zu machen oder nicht.



  • Wutz schrieb:

    Das return in main darf man immer weglassen und es wird in dem Fall immer 0 zurückgegeben, vollkommen egal was da vorher passiert.

    Das ist Unsinn.
    Das Verhalten,d.h. der Returnwert ist in diesem Fall undefiniert. Das ist nicht nur für main sondern für alle anderen returnierenden Funktionen ebenso. Die Compiler sind frei in ihrer Entscheidung,hier was zu machen oder nicht.

    😕
    Du erzählst Unsinn. Wenn du schon anmassend wirst, dann solltest du lieber zuerst die Fakten prüfen. Die main darf das return Statement weglassen und es ist GARANTIERT, dass das den gleichen Effekt hat, wie wenn du return 0 gemacht hättest.

    Und damit du das glaubst zum selber nachprüfen:

    ISO/IEC 14882 3.6.1/5 schrieb:

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic
    storage duration) and calling exit with the return value as the argument. If control reaches the end
    of main without encountering a return statement, the effect is that of executing
    return 0;

    In anderen Funktion meldet der Compiler üblicherweise, dass kein return vorhanden ist (Obwohl man das meistens recht einfach umgehen kann).



  • Hallo Timberlino,

    versuche am besten gleich von anfang an deinen Code einzurücken und auch übersichtlicher zu gestalten!

    Zudem wäre in deinem Fall eher kürzere Variablen von Vorteil, wie z.B. z1 für ersteZahl, denn du brauchst sie ja öfter und musst somit immer alles auschreiben.

    mal zum vergleichen:

    dein code

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    int ersteZahl;
    int zweiteZahl;
    int ergebnis;
    
    cout << "Bitte geben Sie die erste Zahl ein:"<<endl;
    cin >> ersteZahl;
    
    cout << "Bitte geben Sie die zweite Zahl ein:"<<endl;
    cin >> zweiteZahl;
    
    ergebnis = ersteZahl + zweiteZahl;
    
    cout << "Die summe der beiden Zahlen ist: " << ergebnis << endl;
    system("PAUSE");
    
    return 0;
    }
    

    und ein etwas geschrumpfter code:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      cout<<"Bitte geben Sie die erste Zahl ein:"<<endl;
      int z1;
      cin>>z1;
    
      cout<<"Bitte geben Sie die zweite Zahl ein:"<<endl;
      int z2;
      cin>>z2;
    
      int ergebnis = z1 + z2;
    
      cout<<"Die summe der beiden Zahlen ist: "<<ergebnis<<endl;
      system("PAUSE");
      return 0;
    }
    

    Beachte zudem, das man Variablen am Besten dort deklariert, wo man sie benötigt.
    Auch ist es möchglich bei deiner Rechnung gleich

    int ergebnis = ersteZahl + zweite Zahl;
    

    zu schreiben. Hast du dir nämlich schon wieder einmal das Wort ergebnis erspart und zugleich eine deklaration mit initialisierung gemacht.



  • silver-devil schrieb:

    Zudem wäre in deinem Fall eher kürzere Variablen von Vorteil, wie z.B. z1 für ersteZahl, denn du brauchst sie ja öfter und musst somit immer alles auschreiben.

    Das ist der falsche Weg! Auch wenn ersteZahl, zweiteZahl usw. jetzt nicht besonders aussagekräftig sind, sagt einem z1, z2 usw. noch weniger. An erster Stelle sollte nicht die Schreibfaulheit stehen sondern die Lesbarkeit des Codes, und mit aussagekräftigen Variablen- und Funktionsnamen fängt das an. Heutige IDEs haben im Normalfall eine Autovervollständigen-Funktion, so dass man nur die ersten Zeichen eines Variablennamens tippen muss und dann den Rest von der IDE machen lassen kann.



  • Wutz schrieb:

    Das return in main darf man immer weglassen und es wird in dem Fall immer 0 zurückgegeben, vollkommen egal was da vorher passiert.

    Das ist Unsinn.

    Das deine Aussage Unsinn ist, wurde ja schon geschrieben.

    Aber noch ergänzend: Wenn der Compiler Standardkonform ist, wird er KEINE Funktion (außer main) zulassen, die einen Rückgabewert in der Parameterliste hat, und kein return macht (Außer die Funktion wird über eine Exception beendet). Demzufolge ist der Rückgabewert immer wohldefiniert.



  • asc schrieb:

    Wenn der Compiler Standardkonform ist, wird er KEINE Funktion (außer main) zulassen, die einen Rückgabewert in der Parameterliste hat, und kein return macht (Außer die Funktion wird über eine Exception beendet). Demzufolge ist der Rückgabewert immer wohldefiniert.

    Echt?
    Ich dachte bisher immer, ein Standardkonformer Compiler müßte nur korrekten C++-Code in entsprechendes Compilat umformen, aber aus inkorrektem C++-Code dürfe er machen, was er will.


  • Mod

    Ich will hier auch mal die entsprechende Stelle aus dem Standard zum besten geben:

    C++ Standard schrieb:

    Flowing off the end of a function is equivalent to a return with no value; this results in undefined behavior in a value-returning function.

    Das heißt sogar, dass ein Programm mit fehlendem return in normalen Funktionen gültiges C++ ist. Bloß ist das Laufzeitverhalten in diesem Fall, im Gegensatz zur main, undefiniert. Aber compilieren sollte es.


Anmelden zum Antworten