hilfe :S

03/02/2013 01:29 uebertreiber#1
kann jemand mal auf den code gucken und mir sagen wo der fehler ist ?
Visual Studio zeigt mir ständig fehler an :S

Code:
// Input & Output Stream
#include <iostream>
// Mathematischen Operationen von C++
#include <cmath>

using namespace std;

int main()
{
	//Zwei Zahlen vom Typ double für Fließkommazahlen für die Berechnung
	double zahl1;
	double zahl2;

	//Ergebnis 
	double ergebnis = 0;

	//String für die Eingabe des Operators
	string zeichen;

	//Text Ausgabe
	cout << "Geben Sie bitte die Erste Zahl ein: ";
	//Aufforderung der Benutzereingabe
	cin >> zahl1;

	//Text Ausgabe
	cout << "Bitte geben Sie einen Operator ein: ";
	//Aufforderung zur Benutzereingabe
	cin >> zeichen;

	//Text Ausgabe
	cout << "Geben Sie bitte die Zweite Zahl ein: ";
	//Aufforderung der Benutzereingabe
	cin >> zahl2;

	//if-ABfrage mit Operator in String form
	if(zeichen == "+")
	{
        ergebnis = zahl1 + zahl2;
	}
	if(zeichen == "-")
	{
        ergebnis = zahl1 - zahl2;
	}
	if(zeichen == "*")
	{
        ergebnis = zahl1 * zahl2;
	}
	if(zeichen == "/")
	{
        ergebnis = zahl1 / zahl2;
	}

	cout << ergebnis;
	return 0;
}
03/02/2013 09:09 Nightblizard#2
Was hälst du davon uns zu sagen was für Fehler es anzeigt?
03/02/2013 10:04 Schlüsselbein#3
Inkludier mal string statt cmath.
03/02/2013 10:59 uebertreiber#4
danke :) wieso kann der den string nicht einfach so einlesen und muss included werden :S ?

sry hab aber vorher java programmiert dachte string wird einfach erkannt ^^
03/02/2013 17:42 xNRgiZeDx™#5
Wird's zumindest bei code::blocks meistens auch.
03/02/2013 18:09 Schlüsselbein#6
Quote:
Wird's zumindest bei code::blocks meistens auch.
Meistens? Entscheidet Code::Blocks nach Tageslaune?

Ne im ernst: std::string ist nunmal im Header 'string' definiert. Deshalb sollte (nein, man muss sogar, wenn man auf korrekten Stil wert legt) man den Header inkludieren.
Quote:
wieso kann der den string nicht einfach so einlesen und muss included werden :S ?
Was meinst du mit eingelesen? Für die Klasse muss ja eine Definition vorliegen - und das tut sie, wie schon gesagt, im entsprechenden Header.
03/02/2013 18:24 MrSm!th#7
std::string ist nunmal nicht automatisch bekannt, wie das für sizeof, new und andere Keywords der Fall ist, die tatsächlich Teil der Sprache sind.
std::string ist kein eingebauter Datentyp, sondern eine Klasse, die im Standard definiert ist. Sie muss, wie std::istream und std::ostream eingebunden werden.

Warum das so gemacht wurde? Es wird sicherlich Argumente dafür gegeben haben. Prinzipiell sind eigentlich alle Datentypen, die nicht auch in C existieren, keine eingebauten Typen.
03/02/2013 23:39 xNRgiZeDx™#8
Quote:
Meistens? Entscheidet Code::Blocks nach Tageslaune?
Naja bei mir war's jedenfalls bisher immer der Fall, hätte ja sein können das es an manchen Stellen nicht ohne geht...
03/03/2013 00:34 MrSm!th#9
Es sollte eigentlich nicht ohne gehen. Es sei denn, C::B lässt eine Liste von Standard-Includes zu, die immer automatisch eingebunden werden.
Sollte die Implementation tatsächlich den Header string schlichtweg nicht benötigen, würde ich vielleicht den Compiler wechseln. Wobei ja C::B standardmäßig mit dem gcc ausgeliefert wird und der sollte es eigentlich standardgemäß fordern. Also wohl eher ein Feature der IDE.