Nur noch 9 (eigentlich 4 Fehler) im Code
-
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. - FEHLERNaja, 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>.
-
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 erstellenwenn 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 ?
-
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.