naja dann binde ich eben beides ein
Hehe. Bitte nicht
. Einfach cmath einbinden (nicht das für C++ veraltete math.h) und casten. Man sollte sich natürlich immer überlegen, wo und warum man castet, aber in diesem Fall ist es korrekt und so gewollt. Wie dem auch sei, Du weisst ja nun, was dieser Fehler bedeutet.
Das andere meinte ich so:
Du hast hier den Typ string benutzt:
Code:
int eingeben(string ausgeben)
Dieser Typ muss natürlich irgendwo definiert sein. Des Rätsels Lösung: Er ist Teil der Standard Template Library (*)
[ Lesen und vorerst vergessen: er ist bloß ein per typedef spezialisierter base_string:
typedef basic_string<char, char_traits<char>, allocator<char> > string; ]
und wird hier nur indirekt über das Einbinden von->iostream' Deinem Programm (besser gesagt: dem Compiler) bekannt.
Dann kommt:
Das funktioniert aber, je nach Auslegung der Headerdateien, nicht immer. Wenn Du den Typ string verwendest, solltest Du auf jeden Fall auch (zusätzlich) den entsprechenden Header einbinden:
(*)
Die STL ist eine generische C++ Bibliothek, die Container, Algorithmen, Iteratoren und einige Hilfsklassen bereitstellt. In Deinem Programm gehören z.B. iostream und string zur STL. Du solltest Dich aber erst intensiver mit der STL beschäftigen, wenn Du die Themen Klassen und Templates durchgearbeitet hast, denke ich. Natürlich ist es trotzdem sinnvoll, wenn Du Streams zur Ein- und Ausgabe schon jetzt verwendest (was Du ja auch tust).
---
string varpruef(int eingabe, int vergl1, int vergl2)
Hier könntest Du evtl. besser statt eines Strings Konstanten verwenden, z.B. so:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const int PRUEFERGEBNIS_ENDE= 0;
const int PRUEFERGEBNIS_FEHLER= 1;
...
int varpruef(int eingabe, int vergl1, int vergl2)
...
return PRUEFERGEBNIS_ENDE;
...
return PRUEFERGEBNIS_FEHLER;
...
Und unten dann statt Strings einfach int-Werte mit diesen Konstanten vergleichen.
Eine Winzigkeit: Du könntest noch darauf achten, nach jedem Komma und Semikolon (außer beim Zeilenende) ein Leerzeichen zu setzen ...
varpruef(eingabe2,0,eingabe1);
varpruef(eingabe2, 0, eingabe1);
... sowie vor und nach den Operatoren << und >> je ein Leerzeichen:
cout<<endl<<Falsche Eingabe, bitte wiederholen....<<endl<<endl;
cout << endl << Falsche Eingabe, bitte wiederholen.... << endl << endl;