Viele Fehlermeldungen bei kleinem Code...



  • Ich habe versucht eine verkette Liste in eine main einzubetten.
    Nun bin ich so weit:

    #include <iostream>
    #include <cstring>
    #include "stdafx.h"
    #include "FachNote.h"
    
    using namespace std;
    
    bool istRichtig(const FachNote *A) 
    {
    	const string 1="ABC";
    	const string 2="D";
    	const string 3="EF";
    	const string 4="GHI";
    	const string 5="JKL";
    
    	int cmp;
    
    	if ((A->ganze == ((1 || 2 || 3) && (A->zehntel == (0 || 3 || 7))) || (A->ganze == 4 && A->zehntel == 0) || (A->ganze == 5 && A->zehntel == 0))) {
    		for (int i=1; i<6; i++) {
    			cmp = int strcmp (const FachNote* A->fach, const string i);
    			if (cmp == 0) return 1;
    			else return 0;
    		}
    	}
    	else return 0;		
    }
    

    mit der h-Datei:

    #include <iostream>
    
    struct FachNote {
    	FachNote* naechsteFachNotePtr;
    	char fach[40];
    	int ganze;
    	int zehntel;
    };
    
    bool istRichtig(const FachNote* A);
    void inWorten(const FachNote* p);
    

    Nun bringt mir aber Microsoft VS2010 einige Fehlermeldungen, die ich nach langem Suchen nicht nachvollziehen kann:

    1>..\..\FachNote.cpp(10): error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    1>..\..\FachNote.cpp(10): error C2440: '=': 'const char [16]' kann nicht in 'int' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>..\..\FachNote.cpp(11): error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    1>..\..\FachNote.cpp(11): error C2440: '=': 'const char [6]' kann nicht in 'int' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>..\..\FachNote.cpp(12): error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    1>..\..\FachNote.cpp(12): error C2440: '=': 'const char [15]' kann nicht in 'int' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>..\..\FachNote.cpp(13): error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    1>..\..\FachNote.cpp(13): error C2440: '=': 'const char [14]' kann nicht in 'int' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>..\..\FachNote.cpp(14): error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    1>..\..\FachNote.cpp(14): error C2440: '=': 'const char [22]' kann nicht in 'int' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>..\..\FachNote.cpp(18): warning C4805: '==': unsichere Kombination von Typ 'const int' mit Typ 'bool' in einer Operation
    1>..\..\FachNote.cpp(20): error C2062: 'int'-Typ unerwartet
    1> FachNotenListe.cpp

    Und auch hier bekommen ich Fehler: (h-Datei)

    #include <iostream>
    
    FachNote* ersteFachNotePtr = 0;			// leere Liste
    
    void einfuegen(FachNote* B);
    void entfernen(FachNote* C);
    

    \aufgabe02\FachNotenListe.h(3): error C2143: Syntaxfehler: Es fehlt ';' vor '*'
    aufgabe02\FachNotenListe.h(3): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    aufgabe02\FachNotenListe.h(3): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    aufgabe02\FachNotenListe.h(5): error C2065: 'B': nichtdeklarierter Bezeichner
    aufgabe02\FachNotenListe.h(5): error C2182: 'einfuegen': Unzulässige Verwendung des Typs 'void'
    aufgabe02\FachNotenListe.h(5): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.



  • const string 1="ABC";
        const string 2="D";
        const string 3="EF";
        const string 4="GHI";
        const string 5="JKL";
    

    Variablennamen dürfen nicht mit einer Zahl anfangen.
    benenne sie um in z.B. one, two, three... oder etwas änlichem

    Beim zweiten hast du FachNote nicht inkludiert

    #include <iostream>
    #include "FachNote.h" <-- fehlt
    
    FachNote* ersteFachNotePtr = 0;            // leere Liste
    
    void einfuegen(FachNote* B);
    void entfernen(FachNote* C);
    


  • Was ist das denn für ein Funktionsaufruf?

    cmp = int strcmp (const FachNote* A->fach, const string i);
    

    Dir fehlt ganz offensichtlich grundlegendes Wissen.



  • EOP, wir sollten uns selbst die strcmp Funktion beibringen.
    Ja das int gehört weg, nur beschäftigen wir uns noch nicht sehr lange mit Pointern und daher weiß ich nicht jeden Fehler.

    Wie kann ich also ein strcmp durchführen wenn ich ein bestimmtes Element von einem struct vergleichen will?

    Und danke nocheinmitglied für die schnelle Antwort!



  • Bei der Definition/Deklaration einer Funkion gibst du die Parameter- und Rückgabeypen an, beim Aufruf mußt du nur noch mit den Werten hanieren, die du übergeben willst.

    (PS: Willst du nun mit C-Strings (char*/char[]) arbeiten oder mit C++-Strings (std::string)? Wenn letzteres, brauchst du kein strcmp - und du solltest noch ein #include <string> ergänzen)


Anmelden zum Antworten