Nur noch 9 (eigentlich 4 Fehler) im Code



  • _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



  • So, wenn ich nur #include <iostream> benutze bekomme ich diesen Fehler:

    warning C4627: "#include <iostream>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
    1> "stdafx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen

    wenn ich #include "stdafx.h" UND using namespace std; darunter schreibe, kommt wiedderum:

    error C2065: 'cout': nichtdeklarierter Bezeichner (34 x)

    und

    error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden (1x)

    Wo ist da der Wurm drin ?


  • Mod

    Heinek3n schrieb:

    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

    Bezieht sich das auf meine Korrekturen oder auf die von Janjan? Wenn mein Code nicht compiliert, solltest du auf der Stelle deinen Compiler löschen.



  • Denkst du auch ein wenig mit, oder probierst du nur wild rum?
    <iostream> wird benötigt, denn dort sind die Streaming-Klassen definiert die du mit cout benutzt. Dort ist auch cout deklariert. Also MUSST du diesen Header einbinden.

    Wenn du "using namespace std;" nicht nutzt, so muss du jedesmal den Namensraum von cout mit angeben, das heußt du musst immer std::cout schreiben anstatt cout.

    "stdafx.h" musst du einbinden, weil du das vorkompiliere von Headerdateien in Visual Studio aktiviert hast für dein Projekt. Schlechte Idee. Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".



  • Natürlich versuche ich mitzudenken,.. wie gesagt, ich bin seit einer Woche dabei.

    <iostream> wird benötigt, denn dort sind die Streaming-Klassen definiert die du mit cout benutzt. Dort ist auch cout deklariert. Also MUSST du diesen Header einbinden.

    Dann bekomme ich die erste Fehlermeldung:

    warning C4627: "#include <iostream>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
    1> "stdafx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen.

    Wenn du "using namespace std;" nicht nutzt,[...]

    Nutze ich, hier die ersten drei Zeilen des Codes:

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

    Da bekomme ich den Fehler:

    error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden

    und weiter:

    error C2065: 'cout' / 'cin' : nichtdeklarierter Bezeichner

    Ich werd weiter in meinem Wälzer weiterlesen.. hab jez noch ca 700 Seiten vor mir.

    Falls jmd doch noch eine Lösung hat -die er selbst erfolgreich kompiliert hat-
    würde ich mich freuen, diesen zu bekommen.

    THX - Heinek3n


  • Mod

    Lies doch bitte mal mehr als die ersten drei Sätze der Beiträge:

    Janjan schrieb:

    "stdafx.h" musst du einbinden, weil du das vorkompiliere von Headerdateien in Visual Studio aktiviert hast für dein Projekt. Schlechte Idee. Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".

    Ich klinke mich hiermit aus der Diskussion aus. Manche Leute wollen einfach nicht geholfen werden.



  • Der Code von SeppJ auf Seite 2 ist einwandfrei kompilierbar. Die einzige Änderung, die du machen musst, ist #include "stdafx.h" ganz oben einzufügen (bzw. wieder zu 'entauskommentieren'), wenn präkompilierte Header bei dir eingeschaltet sind (was offensichtlich der Fall ist). Ich garantiere dir, dass du, wenn du diesen Code 1:1 übernimmst und meinen Rat bzw. präkompilierte Header befolgst, das Programm übersetzen kannst.



  • Habe den Code von SeppJ übernommen und laut matze [ #include "stdafx.h" ] über
    [ #include <iostream> ] eingefügt.

    Jetzt schmeisst er mir noch EINEN Fehler raus :

    fatal error C1083: Datei (Include) kann nicht geöffnet werden: "stdafx.h": No such file or directory

    Hiernochmal mein aktueller Code:

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    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;
    }
    


  • Entweder du benutzt vorkompilierte Header oder nicht. Also...

    Entweder das:

    - vorkompilierte Header in den Projekt-Settings einstellen
    - stdafx.h inkludieren

    oder das:

    - vorkompilierte Header in den Projekt-Settings ausstellen
    - stdafx.h nicht inkludieren

    Du scheinst die zwei Wege gerne zu mischen. 😉 Das wurde aber alles schon gesagt.



  • Bin den Weg gegangen:

    Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".

    Ist das der un-vorkompilierte Header ?
    Bzw: Was ist ein Vorkompilierter Header...

    Eine bitte habe ich noch: Bitte setzt mir doch mal den Code so auf, dass er in Visual C++ 2008 funzt..

    ansonsten muss ich mich auch ausklinken und erstmal büffeln.... hätte nur so gerne ein Prog das funzt um meiner Frau zu erklären worum es im Prinzip geht.

    Danke - Christian



  • Win32 Konsolenanwendung - Empty Project

    Dann nur noch #include <iostream> und using namespace std;

    Und dann dein Code, das sollte funzen.


Anmelden zum Antworten