Totaler Anfänger hat Probleme mit Variablen



  • Hallo C-PlusPlus Community 😉 !

    Ich lese gerade das Buch Programmieren lernen für Teens - mit C (aus der Bücherei ausgeborgt).
    Ich habe jetzt ein bisschen herumprobiert, es soll keinen Sinn ergeben, sollte aber funktionieren:

    /* komma.c */
    #include <stdio.h>
    
    int main()
    {
    	/* Kartenspiel */
    	float karten, personen;
    
    	printf("\nWieviele Karten hat das Kartenspiel?\n");
    	scanf("%f", &karten);
    
    	printf("\nFür wieviele Personen ist das Spiel?\n");
    	scanf("%f", &personen);
    
    	printf("\n\nJede Person bekommt %f (%f : %f)", karten / personen, karten, personen); 
    
    	/* Formel */
    	printf("__________________________________\n__________________________________\n__________________________________");
    
    	float a = karten, b = personen, c;
    	printf("\n\na = %f (Anzahl der Karten), b = %f (Anzahl der Personen)", karten, personen);
    	printf("\nGib bitte noch eine beliebige Zahl c ein");
    	scanf("%f", &c);
    	float d = ( ( a - b / a + b ) * ( a - b ) * ( a - c ) ) / ( a * b * c );
    	printf("\n Die Gleichung ist d = ( ( a - b / a + b ) * ( a - b ) * ( a - c ) ) / ( a * b * c )");
    	printf("\n d = %f", d);
    
    	getchar();
    	getchar();
    	return 0;
    }
    

    Ich verwende Visual C++ Express Edition und er gibt mir folgende Fehler aus:

    1>c:\users\sven\documents\visual studio 2008\projects\komma\komma\komma.cpp(20) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'
    1>c:\users\sven\documents\visual studio 2008\projects\komma\komma\komma.cpp(23) : error C2065: 'c': nichtdeklarierter Bezeichner
    1>c:\users\sven\documents\visual studio 2008\projects\komma\komma\komma.cpp(24) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'
    1>c:\users\sven\documents\visual studio 2008\projects\komma\komma\komma.cpp(26) : error C2065: 'd': nichtdeklarierter Bezeichner
    

    Ich weiß aber nicht, was da falsch ist.
    Könnte mir jemand helfen?

    Danke,
    Möööp

    Edit: Sorry, bitte in ANSI C verschieben.



  • Ich schätze, du hast eingestellt, dass der Code als C-Code kompiliert werden soll (obwohl es .cpp-Dateien sind, für C musst du die Endung .c nehmen...). Da das Visual Studio nur C89 kann, sind Variablendeklarationen mitten im Code nicht erlaubt. Die müssen immer an den Anfang eines Scopes (zu erkennen an den geschweiften Klammern, z.B. der Anfang einer Funktion).

    Du hast nun 2 Möglichkeiten:

    - du kompilierst als C++-Code. Dann sollte alles klar gehen.

    - du kompilierst weiterhin als C-Code. Dann musst du Variablen halt am Anfang der Funktion (bzw. des Scopes) deklarieren. Statt

    float a = karten, b = personen, c;
    

    notierst du die Deklaration am Anfang und die Zuweisung getrennt später:

    //Anfang der Funktion:
        float a, b, c;
    
        //Zuweisung erst später, wenn sie möglich/nötig ist:
        a = karten;
        b = personen;
    


  • Also C nach dem C89 Standard kann das nicht aber C mit C99 Standard kann das was sonst nur C++ kann?

    Sollte ich vielleicht auf eine andere Entwicklungsumgebung verwenden als Visal C++ Express die C99 kann?
    Welche würdet ihr da Anfängern empfehlen? Sollte aber gratis sein.


Anmelden zum Antworten