Nur noch 9 (eigentlich 4 Fehler) im Code



  • Hallo Forum,.. Seit ein paar Tagen lerne/lese/probiere ich C++ und es gefällt mir.
    Ich habe ein Rechen programm (ab)geschrieben und etwas modifiziert, leider kann ich es nicht ausführen, da beim kompilieren Fehler auftreten.
    -------------------------------------------------------------------------
    Hier ist der Code:

    #include "stdafx.h"
    #include <iostream>
    #include <winsock.h>
    #include <String>

    int add (int a, int b)
    {
    int c = a+b
    ;return c;}
    int Sub (int a, int b)
    {
    int c = a-b
    ;return c;}
    int Mal (int a, int b)
    {
    int c = a * b
    ;return c;}
    int Div (int a, int b)
    {
    int c = a/b
    ;return c;}
    int main();
    {
    cout << "Wilkommen zum Mathe-Programm, geschrieben von Christian !\n";
    cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
    cout << "Geben Sie die erste Zahl ein !\n";
    int Zahl1;
    cin << Zahl1;
    cout << "Geben Sie nun die zweite Zahl ein !\n";
    int Zahl2;
    cin << Zahl2;
    cout << "Wert1 = << Zahl1 << "\n";
    cout << "Wert2 = << Zahl2 << "\n";

    cout << "\n\";
    cout << "Bitte geben Sie die Rechenoperation ein !\n";
    cout << "+++++++++++++++++++++++++++++++++++++++++\n\n";
    cout << "Beide Zahlen addieren, also Zahl 1 plus Zahl 2 = 1\n";
    cout << "Zahlen subtrahieren, also Zahl 1 minus Zahl 2 = 2\n";
    cout << "Zahlen multiplizieren, also Zahl 1 mal Zahl 2 = 3\n";
    cout << "Zahlen dividieren, also Zahl 1 durch Zahl 2 = 4\n";
    cout << "-----------------------------------------------\n\n";
    cout << "Ihre Eingabe ... : ";

    int op;
    cin << op;
    if (op == 1 )
    {
    cout << "Hier Ihr Ergebniss!\n";
    cout << add (Zahl1,Zahl2);
    cout << "\n\n\n";
    }
    else if (op == 2 )
    {
    cout << "Das ist Ihr Ergbniss!\n";
    cout << Sub (Zahl1,Zahl2);
    cout << "n\n\n\";
    }
    else if (op == 3 )
    {
    cout << "Dein Ergebniss Du Lappen!\n";
    cout << Mal (Zahl1,Zahl2);
    cout << "n\n\n\";
    }
    else if (op == 3 )
    {
    cout << "Kannst das nicht im Kopf, Du Flachzange?\n";
    cout << Div (Zahl1,Zahl2);
    cout << "n\n\n\";
    }
    else if ( op < 4)
    {
    cout << "Du bist zu blöd zum scheissen, nochmal Neustarten!\n";
    }

    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
    cout << "Danke dass Sie meinen Rechner benutzt haben. Sie sind zu dumm zum Kopfrechnen!\n";
    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";

    return 0;
    }

    Und jetzt kommen iese Fehler :

    1>------ Erstellen gestartet: Projekt: Rechner, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>Rechner.cpp
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(25) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(34) : error C2017: Ungültige Escapesequenz
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(34) : error C2001: Zeilenvorschub in Konstante.
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(35) : error C2017: Ungültige Escapesequenz
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(35) : error C2001: Zeilenvorschub in Konstante.
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(37) : error C2001: Zeilenvorschub in Konstante.
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(59) : error C2001: Zeilenvorschub in Konstante.
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(65) : error C2001: Zeilenvorschub in Konstante.
    1>c:\users\heineken\documents\visual studio 2008\projects\rechner\rechner\rechner.cpp(71) : error C2001: Zeilenvorschub in Konstante.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Heineken\Documents\Visual Studio 2008\Projects\Rechner\Rechner\Debug\BuildLog.htm" gespeichert.
    1>Rechner - 9 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Da steig ich nicht durch ... Ich bin stark der Meinung alles richtig abgeschrieben zu haben (mehrfach geprüft). Viell könnt Ihr mir auf die Sprünge helfen.

    BTW: Ich benutze Visual C++ 2008 , kann ich mir links neben den Zeilen die Zeilennummer anzeigen lassen ?

    Danke im Voraus - heinek3n

    Edit sagt: error c2001 - da feheln wohl -> " <- aber ich weis beim besten Willen nicht wo ....



    1. Bitte Code-Tag für Code benutzen.
    2. int main(); - Das Semikolon gehört dort nicht hin.
    3. cout und cin sind im Namensraum std. Also entweder immer std::cout schreiben, oder using namespace std; nutzen.

  • Mod

    Das kann ja keiner lesen. Benutze bitte die cpp-Tags! Ich mache dies das erste Mal für dich:

    #include "stdafx.h"
    #include <iostream>
    #include <winsock.h>
    #include <String>
    
    int
    add (int a, int b)
    {
      int c = a + b;
      return c;
    }
    
    int
    Sub (int a, int b)
    {
      int c = a - b;
      return c;
    }
    
    int
    Mal (int a, int b)
    {
      int c = a * b;
      return c;
    }
    
    int
    Div (int a, int b)
    {
      int c = a / b;
      return c;
    }
    
    int main ();
    {
      cout << "Wilkommen zum Mathe-Programm, geschrieben von Christian !\n";
      cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
      cout << "Geben Sie die erste Zahl ein !\n";
      int Zahl1;
      cin << Zahl1;
      cout << "Geben Sie nun die zweite Zahl ein !\n";
      int Zahl2;
      cin << Zahl2;
      cout << "Wert1 = << Zahl1 << " \ n ";
    cout << " Wert2 = <<Zahl2 << "\n";
    
      cout << "\n";
      cout << "Bitte geben Sie die Rechenoperation ein !\n";
      cout << "+++++++++++++++++++++++++++++++++++++++++\n\n";
      cout << "Beide Zahlen addieren, also Zahl 1 plus Zahl 2 = 1\n";
      cout << "Zahlen subtrahieren, also Zahl 1 minus Zahl 2 = 2\n";
      cout << "Zahlen multiplizieren, also Zahl 1 mal Zahl 2 = 3\n";
      cout << "Zahlen dividieren, also Zahl 1 durch Zahl 2 = 4\n";
      cout << "-----------------------------------------------\n\n";
      cout << "Ihre Eingabe ... : ";
    
      int op;
      cin << op;
      if (op == 1)
        {
          cout << "Hier Ihr Ergebniss!\n";
          cout << add (Zahl1, Zahl2);
          cout << "\n\n\n";
        }
      else if (op == 2)
        {
          cout << "Das ist Ihr Ergbniss!\n";
          cout << Sub (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op == 3)
        {
          cout << "Dein Ergebniss Du Lappen!\n";
          cout << Mal (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op == 3)
        {
          cout << "Kannst das nicht im Kopf, Du Flachzange?\n";
          cout << Div (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op < 4)
        {
          cout << "Du bist zu blöd zum scheissen, nochmal Neustarten!\n";
        }
    
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
      cout <<
        "Danke dass Sie meinen Rechner benutzt haben. Sie sind zu dumm zum Kopfrechnen!\n";
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
    
      return 0;
    }
    


  • Hi,

    hinter dem int main() steht ein Semikolon - darf aber nicht.
    In Zeile 34 und 35 guck mal nach, ob jedes öffnende Anführungszeichen auch ein schliessendes hat.



  • 1. Semikolon nach "int main()" muss weg (die Funktion soll ja nicht da zu Ende sein, sondern alles folgende beinhalten => geschweifte Klammern).

    2. Setz mal mehr Anführungszeichen! 😃 Vielleicht eher so:

    cout << "Wert1 = " << Zahl1 << "\n";
    

    3. Ergibt sich durch 2.

    4. + 5. Nochmal dasselbe...



  • seid ihr schnell,.. ich probiere es gleich einmal ... danke !



  • Ein fehler ist übrig geblieben und zwar:
    ------------------------------------------------------------------------------
    (37) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    ------------------------------------------------------------------------------

    Der Rest waren tatsächlich "Rechtschreibfehler" bei cin habe ich << statt >> verwendet, zweimal hatte ich ein [space] zuviel und mal ein Simikolon zu viel !

    Der letzte Fehler jedoch sagt mir im Moment nix.. ich werde mal googeln.

    Zu guter Letzt : Danke für eure sauschnellen Antworten ! Ich hoffe, dass ich hier hin und wieder Support bekomme.

    EDIT sagt:

    Ich komm nicht dahinter... es scheint ja an den #include´s zu liegen... fehlt da einer oder sind sie in der falschen Reihenfolge (wenn sowas überhaupt relevant ist ?)



  • Heinek3n schrieb:

    Ein fehler ist übrig geblieben und zwar:
    ------------------------------------------------------------------------------
    (37) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    ------------------------------------------------------------------------------

    Das dürfte das Semikolon hinter der main-Funktion sein (hatte ich schon geschrieben). Du legst damit quasi nur eine Deklaration (keine Definition) der Funktion an, und im Anschluss steht dann im "leeren Raum" Inhalt in geschweiften Klammern. Dort darf aber nur sowas stehen, wenn es zu einer Funktion/Klasse gehört. Also meckert der Compiler, dass der Kopf dieser Funktion fehlt.

    falsch:

    int main();
    {
    

    richtig:

    int main()
    {
    


  • Aye, tatsache.. den hatte ich vergessen...

    Jetzt habe ich nurnoch den Fehler:

    error C2065: 'cout': nichtdeklarierter Bezeichner

    Das sollte ich ja wegbekommen ,wenn ich vor jedes cout oder cin ein std:: setze
    ODER ein use namespace std unter die #include´s setze, richtig ?

    ZU: use namespace std
    Irgendetwas fehlt da doch .. hab schleierhaft was in Erinnerung. Und muss es an eine bestimmte Stelle oder einfach direkt unter den 'include`s ?

    Danke



  • Du musst "using namespace std;" notieren, nicht "use".

    Übrigens: wenn du Min schon Sub nennst, dann nenne Mal doch auch Mul! 😃



  • _matze schrieb:

    Du musst "using namespace std;" notieren, nicht "use".

    Übrigens: wenn du Min schon Sub nennst, dann nenne Mal doch auch Mul! 😃

    wenn ich using namespace std; unter die #include´s setzte bekomme ich lauter :

    error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden. - FEHLER

    Und das mit MIN und MUL - ist das ironisch gemeint ? Bin wirklich erst am Anfang meiner C++ Laufbahn 😕



  • Heinek3n schrieb:

    wenn ich using namespace std; unter die #include´s setzte bekomme ich lauter :

    error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden. - FEHLER

    Zeig bitte noch mal den (kompletten) aktuellen Code.

    Heinek3n schrieb:

    Und das mit MIN und MUL - ist das ironisch gemeint ? Bin wirklich erst am Anfang meiner C++ Laufbahn 😕

    War nur Spaß. 😉 Du hast die Funktionen Add, Sub und Div notiert, aber dann Mal (nicht Mul wie multiplizieren). Nicht von mir verwirren lassen...



  • Ich muss zugeben ich mache nicht viel mit C++
    aber

    #include <String>
    

    mit grossem S kenne ich bisher noch nicht 😉

    MfG f.-th.



  • f.-th. schrieb:

    Ich muss zugeben ich mache nicht viel mit C++
    aber

    #include <String>
    

    mit grossem S kenne ich bisher noch nicht 😉

    MfG f.-th.

    Ist zumindest auf Windows-Systemen (Dateinamen nicht case-sensitive) wahrscheinlich egal, oder? Trotzdem ungewohnt... 😉



  • Heinek3n schrieb:

    error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden. - FEHLER
    

    Naja, schauen wir doch mal was da genau steht:

    Der Compiler hat einen operator<< gefunden, mit dem er Probleme hat. Genauer gesagt, mit dessen ersten Parameter, er erwartet einen std::basic_ostream<E,T>&, findet aber nur ein std::istream.
    Zusammengefasst: du hast operator<< auf einen istream angewandt.

    Wo, das sollte dir die Fehlermeldung eigentlich auch sagen, wenn du sie komplett liest. Oder du schaust selbst im Code nach:

    /* ... */
      int Zahl1;
      cin << Zahl1;
      cout << "Geben Sie nun die zweite Zahl ein !\n";
      int Zahl2;
      cin << Zahl2;
    /* ... */
      int op;
      cin << op;
    /* ... */
    


  • #include "stdafx.h"
    #include <iostream>
    #include <winsock.h>
    #include <String>
    #include <stdio.h>
    #include <stdlib.h>
    #include <Math.h>
    #include <New.h>
    #include <fstream>
    
    int
    add (int a, int b)
    {
      int c = a + b;
      return c;
    }
    
    int
    Sub (int a, int b)
    {
      int c = a - b;
      return c;
    }
    
    int
    Mal (int a, int b)
    {
      int c = a * b;
      return c;
    }
    
    int
    Div (int a, int b)
    {
      int c = a / b;
      return c;
    }
    
    int main ()
    {
      cout << "Wilkommen zum Mathe-Programm, geschrieben von Christian ! \n";
      cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
      cout << "Geben Sie die erste Zahl ein ! \n";
      int Zahl1;
      cin >> Zahl1;
      cout << "Geben Sie nun die zweite Zahl ein ! \n";
      int Zahl2;
      cin >> Zahl2;
      cout << "Wert1 = " << Zahl1 << " \n";
    cout << " Wert2 = " << Zahl2 << "\n";
    
      cout << "\n";
      cout << "Bitte geben Sie die Rechenoperation ein !\n";
      cout << "+++++++++++++++++++++++++++++++++++++++++\n\n";
      cout << "Beide Zahlen addieren, also Zahl 1 plus Zahl 2 = 1\n";
      cout << "Zahlen subtrahieren, also Zahl 1 minus Zahl 2 = 2\n";
      cout << "Zahlen multiplizieren, also Zahl 1 mal Zahl 2 = 3\n";
      cout << "Zahlen dividieren, also Zahl 1 durch Zahl 2 = 4\n";
      cout << "-----------------------------------------------\n\n";
      cout << "Ihre Eingabe ... : ";
    
      int op;
      cin << op;
      if (op == 1)
        {
          cout << "Hier Ihr Ergebniss!\n";
          cout << add (Zahl1, Zahl2);
          cout << "\n\n\n";
        }
      else if (op == 2)
        {
          cout << "Das ist Ihr Ergbniss!\n";
          cout << Sub (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op == 3)
        {
          cout << "Dein Ergebniss Du Lappen!\n";
          cout << Mal (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op == 3)
        {
          cout << "Kannst das nicht im Kopf, Du Flachzange?\n";
          cout << Div (Zahl1, Zahl2);
          cout << "n\n\n";
        }
      else if (op < 4)
        {
          cout << "Du bist zu blöd zum scheissen, nochmal Neustarten!\n";
        }
    
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
      cout <<
        "Danke dass Sie meinen Rechner benutzt haben. Sie sind zu dumm zum Kopfrechnen!\n";
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
    
      return 0;
    }
    

    Fehlermeldungen nun:
    --------------------
    34 x error C2065: 'cout': nichtdeklarierter Bezeichner
    Mit den #includes hab ich n bisschen rumgespielt, nach dem MOtto: Mehr kann nicht schaden.



  • Und wenn ich using namespace std; unter die #include´s setzte bekomme ich lauter :

    error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden. - FEHLER 😞



  • Wirf mal die ganzen unsinnigen Header raus die du da einbindest....

    Für deinen Code benötigst du nur <iostream>.


  • Mod

    Irgendwie wird der Code jedesmal schlechter, anstatt besser. Liest du dir überhaupt durch, was hier geschrieben wird?

    // #include "stdafx.h"      Wozu?
    #include <iostream>
    // #include <winsock.h>     Wozu?
    // #include <String>        string schreibt man klein. Außerdem: Wozu?
    // #include <stdio.h>       Das heißt erstens cstdio und zweitens: Wozu?
    // #include <stdlib.h>      Das heißt ersten cstdlib und zweitens: Wozu?
    // #include <Math.h>        math.h schreibt man klein und zweitens heißt das cmath, drittens: Wozu?
    // #include <New.h>         1. new.h schreibt man klein. 2. Das heißt new, nicht new.h. 3. Wozu?
    // #include <fstream>       Wozu?
    
    using namespace std;    // Du verwendest allerlei Zeug aus std, da ist es durchaus gerechtfertigt, ein using namespace zu setzen
    
    int
    add (int a, int b)
    {
      int c = a + b;
      return c;
    }
    
    int
    Sub (int a, int b)
    {
      int c = a - b;
      return c;
    }
    
    int
    Mal (int a, int b)
    {
      int c = a * b;
      return c;
    }
    
    int
    Div (int a, int b)
    {
      int c = a / b;
      return c;
    }
    
    int main ()
    {
      cout << "Wilkommen zum Mathe-Programm, geschrieben von Christian ! \n";
      cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
      cout << "Geben Sie die erste Zahl ein ! \n";
      int Zahl1;
      cin >> Zahl1;
      cout << "Geben Sie nun die zweite Zahl ein ! \n";
      int Zahl2;
      cin >> Zahl2;
      cout << "Wert1 = " << Zahl1 << " \n";
    cout << " Wert2 = " << Zahl2 << "\n";
    
      cout << "\n";
      cout << "Bitte geben Sie die Rechenoperation ein !\n";
      cout << "+++++++++++++++++++++++++++++++++++++++++\n\n";
      cout << "Beide Zahlen addieren, also Zahl 1 plus Zahl 2 = 1\n";
      cout << "Zahlen subtrahieren, also Zahl 1 minus Zahl 2 = 2\n";
      cout << "Zahlen multiplizieren, also Zahl 1 mal Zahl 2 = 3\n";
      cout << "Zahlen dividieren, also Zahl 1 durch Zahl 2 = 4\n";
      cout << "-----------------------------------------------\n\n";
      cout << "Ihre Eingabe ... : ";
    
      int op;
      cin >> op;               // Das ist >> und nicht <<
      if (op == 1)
        {
          cout << "Hier Ihr Ergebniss!\n";
          cout << add (Zahl1, Zahl2);
          cout << "\n\n\n";
        }
      else if (op == 2)
        {
          cout << "Das ist Ihr Ergbniss!\n";
          cout << Sub (Zahl1, Zahl2);
          cout << "\n\n\n";     // Du meinst wohl dreimal newline, nicht n und zweimal newline
        }
      else if (op == 3)
        {
          cout << "Dein Ergebniss Du Lappen!\n";
          cout << Mal (Zahl1, Zahl2);
          cout << "\n\n\n";     // Siehe oben
        }
      else if (op == 3)
        {
          cout << "Kannst das nicht im Kopf, Du Flachzange?\n";
          cout << Div (Zahl1, Zahl2);
          cout << "\n\n\n";     // Siehe oben
        }
      else if (op < 4)
        {
          cout << "Du bist zu blöd zum scheissen, nochmal Neustarten!\n";
        }
    
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
      cout <<
        "Danke dass Sie meinen Rechner benutzt haben. Sie sind zu dumm zum Kopfrechnen!\n";
      cout <<
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";
    
      return 0;
    }
    

    Denk bitte über das nach, was ich kommentiert habe anstatt einfach nur froh zu sein, dass dein Programm jetzt funktioniert. Du kannst viel dabei lernen.



  • Hab ich ... immernoch

    error C2065: 'cout': nichtdeklarierter Bezeichner

    langasam verzweifel ich ... könnte jemand den Code mal kopieren und bei sich versuchen zu kompilieren ?

    Wäre shr nett...

    Greez Heinek3n


Anmelden zum Antworten