fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer '{' gefunden wurde



  • Fehler fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer '{' gefunden wurde

    edit: "Siehe Titel" weggemacht, denn damit kann man die Frage nicht gescheit quoten.

    Diese Frage wurde schon gestellt, aber ich habe ja einen anderen Code.
    Kann mir jemand sagen, wo der Fehler liegt? Das Programm dient dazu, Celsius in Fahrenheit und andersrum umzurechenen. Den Code findet ihr unter Programm.de.vc

    tbremer19

    edit: Und natürlich hier:

    // Temperaturumrechner.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    #include "stdafx.h"
    #include "targetver.h"
    #include "iostream" //Das ist Kommentar
    #include "string"
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char chAuswahl;
    	cout << "<A> Celsius zu Fahrenheit" ;
    	cout << "<B> Fahrenheit zu Celsius" ;
    	cin >> chAuswahl ;
    	switch (chAuswahl)
    	{
    	case 'A':
    	case 'a':
    		{
    			double fahrenheit ;
    	double celsius ;
    
    	cout << "Temperatur in Fahrenheit: " ;
        cin >> fahrenheit ;
    	getchar();
    
    	celsius = (fahrenheit - 32 ) * 5.0 /9.0 ;
    	cout.precision(2);
    	cout << fixed;
    
    	cout << fahrenheit
    		 << "Grad Fahrenheit entsprechen "
    		 << celsius
    		 << " Grad Celsius" << endl ;
    		}break; 
    		getchar();
    
    	case 'B' :
    	case 'b':
    		{
    			double celsius ;
    	double fahrenheit ;
    
    	cout << "Temperatur in Celsius: " ;
        cin >> celsius ;
    	getchar();
    
    	fahrenheit = ((celsius *9 ) / 5 ) + 32 ;
    	cout.precision(2);
    	cout << fixed;
    
    	cout << fahrenheit
    		 << "Grad Celsius entsprechen "
    		 << fahrenheit
    		 << " Grad Fahrenheit" << endl ;
    		}break;
    
    	getchar();
    
    	return 0;
    
    	}
    

  • Mod

    Nun, was mag diese Fehlermeldung wohl bedeuten? 🙄

    Wenn du das beantworten kannst, dann weißt du auch wonach du suchen musst.

    Tipp: Rate mal, welches andere Element wohl zu einer '{' passt und fehlen könnte.



  • tbremer19 schrieb:

    Den Code findet ihr unter Programm.de.vc

    Da wird keiner reinschauen. Reduzier den Code aufs wesentliche und poste ihn hier.



  • Wo muss die zweite Klammer denn hin?



  • // Temperaturumrechner.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    #include "stdafx.h"
    #include "targetver.h"
    #include "iostream" //Das ist Kommentar
    #include "string"
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    char chAuswahl;
    cout << "<A> Celsius zu Fahrenheit" ;
    cout << "<B> Fahrenheit zu Celsius" ;
    cin >> chAuswahl ;
    switch (chAuswahl)
    {
    case 'A':
    case 'a':
    {
    double fahrenheit ;
    double celsius ;

    cout << "Temperatur in Fahrenheit: " ;
    cin >> fahrenheit ;
    getchar();

    celsius = (fahrenheit - 32 ) * 5.0 /9.0 ;
    cout.precision(2);
    cout << fixed;

    cout << fahrenheit
    << "Grad Fahrenheit entsprechen "
    << celsius
    << " Grad Celsius" << endl ;
    }break;
    getchar();

    case 'B' :
    case 'b':
    {
    double celsius ;
    double fahrenheit ;

    cout << "Temperatur in Celsius: " ;
    cin >> celsius ;
    getchar();

    fahrenheit = ((celsius *9 ) / 5 ) + 32 ;
    cout.precision(2);
    cout << fixed;

    cout << fahrenheit
    << "Grad Celsius entsprechen "
    << fahrenheit
    << " Grad Fahrenheit" << endl ;
    }break;

    getchar();

    return 0;

    }



  • Mein Vorschlag: Verwende eine vernüftige Code-Einrückung (oder eine IDE, die sowas automatisch macht), dann siehst du auch, welche Klammer an welcher Stelle wieder geschlossen wird.

    PS: Zeile 17 😃



  • Konkret:
    Ich vermute, Du nimmst die IDE von Microsoft, wenn ja, drücke
    Strg+A (Alles markieren)
    Alt+F8 (Markiertes Zeug automatisch einrücken)



  • bei dir fehlt ganz am ende noch eine }



  • CStoll schrieb:

    Mein Vorschlag: Verwende eine vernüftige Code-Einrückung (oder eine IDE, die sowas automatisch macht), dann siehst du auch, welche Klammer an welcher Stelle wieder geschlossen wird.

    PS: Zeile 17 😃

    Ich verwende Visual C++ 2010 Express.



  • tbremer19 schrieb:

    Ich verwende Visual C++ 2010 Express.

    Ich hab' zwar noch nicht mit der Express gearbeitet, aber nach meinen Erfahrungen ist MSVC recht gut damit, den Code automatisch einzurücken.

    Ansonsten noch etwas konkreter: Wo endet die switch(chAuswahl)-Anweisung in deinem Programm?



  • switch endet nach dem letzten break.



  • Bist du dir da ganz sicher? Laut Syntax-Regeln von C++ endet die Verbund-Anweisung unter dem switch() mit der entsprechenden schließenden Klammer - und nach dem break gibt es keine schließende Klammer, damit gelten die getchar() und return-Anweisung auch noch als Teil des switch (und als toter Code).



  • Tach bin Programmier Anfänger und habe das selbe Problem. Hier ist der Code
    :

    //SteinScherePapier
    //
    #include<iostream>
    #include<ctime>
    
    using namespace std;
    
    //Funktionen
    void Game();
    
    int main() {
    
    	Game();
    
    	return 0;
    }
    
    void Game() {
    	//Veriabeln
    	int KIselction = 0, PLAYERselction = 0, limit = 3;
    	//RandomErschaffen
    	srand((unsigned)time(0));
    
    	for (int i = 0; i < 10; i++) {
    
    		//SpielerWahl
    		cout << "Was willst du 1.Stein, 2.Schere, 3.Papier?" << endl;
    		cin >> PLAYERselction;
    
    		//KiWahl
    		KIselction = (rand() % limit) + 1;
    
    		//
    		if (KIselction == PLAYERselction && PLAYERselction == 1) {
    			cout << "Unentschieden ihr beide habt Stein!" << endl;
    		}
    		else if (KIselction == PLAYERselction && PLAYERselction == 2) {
    			cout << "Unentschieden ihr beide habt Schere!" << endl;
    		}
    		else if (KIselction == PLAYERselction && PLAYERselction == 3) {
    			cout << "Unentschieden ihr beide habt Papier!" << endl;
    		}
    		else if (KIselction == 1 && PLAYERselction == 2) {
    			cout << "Die KI gewinnt. (Stein schlägt Schere)" << endl;
    		}
    		else if (KIselction == 2 && PLAYERselction == 3) {
    			cout << "Die KI gewinnt. (Schere schlägt Papier)" << endl;
    		}
    		else if (KIselction == 3 && PLAYERselction == 1) {
    			cout << "Die KI gewinnt. (Papier schlägt Stein )" << endl;
    		}
    		else if (KIselction == 1 && PLAYERselction == 3) {
    			cout << "Der Spieler gewinnt. (Papier schlägt Stein )" << endl;
    		}
    		else if (KIselction == 3 && PLAYERselction == 2) {
    			cout << "Der Spieler gewinnt. (Schere schlägt Papier)" << endl;
    		}
    		else if (KIselction == 2 && PLAYERselction == 1) {
    			cout << "Der Spieler gewinnt. (Stein schlägt Schere)" << endl;
    		}
    		else {
    			cout << "Fehler" << endl;
    		}
    	}
    

    Komisch ist das der Fehler in der 90 Zeile auftaucht wobei mein Code nur bis 64 geht....


  • Mod

    Fällt denn der Fehler nicht direkt auf, wenn du den Code hier postest? Da fehlt doch offensichtlich etwas und die Fehlermeldung sagt sogar, was fehlt.

    Allgemein gilt es als recht unhöflich, uralte Threads wieder zu beleben, bloß weil sie ein ähnliches Thema haben. Ein Leser kämpft sich dann erst durch mehrere Seiten irrelevantes Material um dann zu sehen, dass eine neue Frage gestellt wurde. Richtig wäre, den alten Thread zu lesen, ob er eine Lösung präsentiert (tut er in diesem Fall!) und falls dies nicht hilft, fragt man eben noch einmal. Eventuell mit Verweis auf den alten Thread, dass die dortige Lösung einem nicht weiter geholfen hat und warum.



  • Ja, du hast eine '}' vergessen. Warum lässt du die ganzen Klammern um die cout's nicht einfach weg? Dann wäre das auch nicht passiert.


  • Mod

    Bitmapper schrieb:

    Warum lässt du die ganzen Klammern um die cout's nicht einfach weg? Dann wäre das auch nicht passiert.

    Das ist schon ok die zu setzen.



  • SeppJ schrieb:

    Bitmapper schrieb:

    Warum lässt du die ganzen Klammern um die cout's nicht einfach weg? Dann wäre das auch nicht passiert.

    Das ist schon ok die zu setzen.

    Dann aber wenigstens die, die zusammengehören untereinander.


  • Mod

    Bitmapper schrieb:

    SeppJ schrieb:

    Bitmapper schrieb:

    Warum lässt du die ganzen Klammern um die cout's nicht einfach weg? Dann wäre das auch nicht passiert.

    Das ist schon ok die zu setzen.

    Dann aber wenigstens die, die zusammengehören untereinander.

    Jupp.


Anmelden zum Antworten