Was mach ich falsch ?

Hab mal versucht n einfaches Ratespiel zu programmieren. Doch irgendwie kommen beim kompilieren immer folgende beiden Fehlermeldungen jeweils an den markierten Stellen:

expected primary-expression before "else"
expected `;' before "else"

Was mache ich falsch ?

Hier der Quelltext:

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
int Zahl;

srand( (unsigned)time( NULL ) );

Zahl = rand() % 100 +1;

cout<<"Errate meine Zahl zwischen 1 und 100. Du hast 6 Versuche."<<endl<<"1. Versuch:";
int Versuch1;
cin>>Versuch1;
getchar();
if(Zahl<Versuch1)
cout<<"Die Zahl ist kleiner als "<<Versuch1<<endl<<endl<<"2.Versuch:";
int Versuch2;
cin>>Versuch2;
getchar();

if (Zahl<Versuch2)
cout<<"Die Zahl ist kleiner als "<<Versuch2<<endl<<endl<<"3.Versuch:";
int Versuch3;
cin>>Versuch3;
getchar();

if (Zahl<Versuch3)
cout<<"Die Zahl ist kleiner als "<<Versuch3<<endl<<endl<<"4.Versuch:";
int Versuch4;
cin>>Versuch4;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch4<<endl<<endl<<"5.Versuch:";
int Versuch5;
cin>>Versuch5;
getchar();

if (Zahl<Versuch5)
cout<<"Die Zahl ist kleiner als "<<Versuch5<<endl<<endl<<"6.Versuch:";
int Versuch6;
cin>>Versuch6;
getchar();
if (Versuch6==Zahl)
cout<<"Glückwunsch, sie haben die Zahl erraten!"<<endl;

else
cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war "<<Zahl<<endl;

else
cout<<"Die Zahl ist groesser als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch6;
getchar();

if (Versuch6=Zahl)
cout<<"Glückwunsch, sie haben die Zahl erraten!"<<endl;

else
cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<Zahl<<endl;

else cout<<"Die Zahl ist groesser als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch5;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch6;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch2<<endl<<endl<<"3.Versuch:";
cin>>Versuch3;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();
else
cout<<"Die Zahl ist groesser als "<<Versuch2<<endl<<endl<<"3.Versuch:";
cin>>Versuch3;
getchar();


else
cout<<"Die Zahl ist groesser als "<<Versuch1<<endl<<endl<<"2.Versuch:";

if (Zahl<Versuch2)
cout<<"Die Zahl ist kleiner als "<<Versuch2<<endl<<endl<<"3.Versuch:";
cin>>Versuch3;
getchar();

if (Zahl<Versuch3)
cout<<"Die Zahl ist kleiner als "<<Versuch3<<endl<<endl<<"4.Versuch:";
cin>>Versuch4;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch5;
getchar();

if (Versuch6=Zahl)
cout<<"Glückwunsch, sie haben die Zahl erraten!"<<endl;
else
cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<Zahl<<endl;

else
cout<<"Die Zahl ist groesser als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch6;
getchar();

if (Versuch6=Zahl)
cout<<"Glückwunsch, sie haben die Zahl erraten!"<<endl;

else
cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<Zahl<<endl;

else
cout<<"Die Zahl ist groesser als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch5;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch5<<endl<<endl<<"6.Versuch:";
cin>>Versuch6;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch2<<endl<<endl<<"3.Versuch:";
cin>>Versuch3;
getchar();

if (Zahl<Versuch4)
cout<<"Die Zahl ist kleiner als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

else
cout<<"Die Zahl ist groesser als "<<Versuch4<<endl<<endl<<"5.Versuch:";
cin>>Versuch5;
getchar();

getchar();
return 0;
}
 
Ich glaub du solltest dir nochmal anschauen wie das mit if.. then.. else... funktioniert. if... then... else... else... gibt es nicht und macht logisch auch keinen sinn.

odigo

Edit: du solltest dir auch anschauen wie man es machen muss wenn man mehrere Anweisungen nach einem if bzw else ausführen will. Stichwort {}
 
Hi,
also ich hab mir den code mal angeschau und einige schleifen wieder zu gemacht, die includes mal ergänzt.
Allerdings hat mir das kram etwas iritiert. das kenne ich bisher noch nicht.
using namespace std; wusste ich auch ncihts mit anzufangen
ich würde trotzdem deine if then else schleifen mal kontrollieren, die sind wohl noch arg kaputt
Code:
#include <stdafx.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

//using namespace std;

int main()
{
	int Zahl;

	srand( (unsigned)time( NULL ) );

	Zahl = rand() % 100 +1;

	cout<<"Errate meine Zahl zwischen 1 und 100. Du hast 6 Versuche." ;
	cout <<"1. Versuch:";
	int Versuch1;
	cin>>Versuch1;
	getchar();
	if(Zahl)
	cout<<"Die Zahl ist kleiner als "<<"2.Versuch:";
	int Versuch2;
	cin>>Versuch2;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"3.Versuch:";
	int Versuch3;
	cin>>Versuch3;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"4.Versuch:";
	int Versuch4;
	cin>>Versuch4;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"5.Versuch:";
	int Versuch5;
	cin>>Versuch5;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"6.Versuch:";
	int Versuch6;
	cin>>Versuch6;
	getchar();
	if (Versuch6==Zahl)
	cout<<"Glückwunsch, sie haben die Zahl erraten!";

	else
	cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war ";

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"6.Versuch:";
	cin>>Versuch6;
	getchar();

	if (Versuch6=Zahl)
	cout<<"Glückwunsch, sie haben die Zahl erraten!";

	else
	cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<

	[COLOR=red]else[/COLOR] cout<<"Die Zahl ist groesser als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"6.Versuch:";
	cin>>Versuch5;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"6.Versuch:";
	cin>>Versuch6;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"3.Versuch:";
	cin>>Versuch3;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();
	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"3.Versuch:";
	cin>>Versuch3;
	getchar();


	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"2.Versuch:";

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"3.Versuch:";
	cin>>Versuch3;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"4.Versuch:";
	cin>>Versuch4;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"6.Versuch:";
	cin>>Versuch5;
	getchar();

	if (Versuch6=Zahl)
	cout<<"Glückwunsch, sie haben die Zahl erraten!"<
	else
	cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"6.Versuch:";
	cin>>Versuch6;
	getchar();

	if (Versuch6=Zahl)
	cout<<"Glückwunsch, sie haben die Zahl erraten!"<

	else
	cout<<"Schade, sie haben die Zahl leider nich erraten. Die Zahl war"<<

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"6.Versuch:";
	cin>>Versuch5;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"6.Versuch:";
	cin>>Versuch6;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"3.Versuch:";
	cin>>Versuch3;
	getchar();

	if (Zahl)
	cout<<"Die Zahl ist kleiner als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	[COLOR=red]else[/COLOR]
	cout<<"Die Zahl ist groesser als "<<"5.Versuch:";
	cin>>Versuch5;
	getchar();

	getchar();
	return 0;
}
 
Irre ich mich jetzt oder soll das C++ sein (ist ja schon spät)? Wenn ja hast du recht viel falsch gemacht!
Als erstes wenn du nach einem if oder else mehrere Anweisungen hast, musst du die in geschweifte Klammern {} setzen!
Dann gehört der else Block hinter den if Block und im Falle mehrerer if Abfragen nimmt man if nur beim ersten block, dann else if bzw beim letzen der den default Fall darstellt nur else. Naja lies am besten nochmal nach.
Zu dem using namespace std, cout, cin oder endl sind alles Funktionen der C++ Standard Bibliothek welche im namespace std liegen und damit du nicht immer std::cout schreiben musst kannst du die using direktive nutzen. Und nur zu Ergänzung durch die using direktive brichst du mit dem dem Konzept der Namespaces, besser ist es die using Deklaration zu nutzen für die Befehle die du nutzt zb using std::cout;. Naja damit der Text nich ganz umsonst war habe ich dir mal noch schnell geschrieben wie ich das machen würde. (der Code ist in der Habo IDE entworfen und ungetestet! (; )
Code:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );
int Zahl=rand() % 100 +1;
int AnzahlDerVersuche=6;
int eingabe;
cout<<"6 Versuche um eine Zahl bis 100 zu raten!\n";
for(int i=1;i<=AnzahlDerVersuche;i++){
 cout<<"Versuch nummer "<<i<<":"; 
 cin>>eingabe;
 if(eingabe==Zahl) {
   cout<<"die eingegebene zahl war richtig!\n du hast "<<i<<" Versuche gebraucht\n.";
   break;
 }
 else if (eingabe<Zahl)    
 cout<<"die eingegebene zahl war kleiner als die gesuchte zahl!\n";
 else if (eingabe>Zahl)
 cout<<"die eingegebene zahl war groesser als die gesuchte zahl!\n";
 else
 cout<<"ungültige eingabe\n";
}
getchar();return 0;
}
 
@odigo: Ich hatte doch pro "if" jeweils ein "else".

@sfil: Das sollte nur zeigen an welchen Stellen der Compiler jeweils die Fehlermeldung anzeigt. Bei deinem Code hat sich nichts verändert. Kommt die gleiche Fehlermeldung.

@cr0523: Deins hat fast funktioniert. Musste nur noch ein "getchar()" einbauen. So ne ähnliche Lösung hab ich au gesucht kannte nur das nicht:
Code:
for(int i=1;i<=AnzahlDerVersuche;i++)
und das else if eben.

So siehts jetzt aus:
Code:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );
int Zahl=rand() % 100 +1;
int AnzahlDerVersuche=6;
int eingabe;
cout<<"6 Versuche um eine Zahl bis 100 zu raten!\n";
for(int i=1;i<=AnzahlDerVersuche;i++){
 cout<<"Versuch "<<i<<":"; 
 cin>>eingabe;
 getchar();
 if(eingabe==Zahl) {
   cout<<"die eingegebene zahl war richtig!\n du hast "<<i<<" Versuche gebraucht\n.";
   break;
 }
 else if (eingabe<Zahl)    
 cout<<"Die Zahl ist groesser als deine eingegebene Zahl!\n";
 else if (eingabe>Zahl)
 cout<<"Die Zahl ist kleiner als deine eingegebene Zahl!\n";
 else
 cout<<"ungültige eingabe\n";
}
getchar();
return 0;
}

Des warum ich net "using namespace std;" benutzen soll hab ich allerdings noch net verstanden.

Ach noch was: Wenn jmd gute Tutorials zu C++ kennt darf er gerne posten :D
 
Hab den Code heute mal getestet bei mir gehts komplett ohne die getchar()'s, wenn du dich ernsthaft mit C++ beschäftigen willst rate ich dir zu "The C++ Programming Language" von Stroustrup.
Für Linux gibts hier ein sehr gutes online Buch:
http://cpp-entwicklung.de/cpplinux3/cpp_main/cpp_main.html
Das meiste geht natürlich auch unter Windows da C++ im Prinzip eine Plattformunabhängige Sprache ist (Wenn Windows das mal vernünftig implementieren würde!). Meld dich mal per PM bei Interesse an ein paar freien ebooks zum Thema, hab da bisschen was auf meinem FTp rumliegen.
 
Zurück
Oben