Programmieren ... komme nicht mehr weiter [C++]

Hey,

ich habe seit gestern angefangen aktiv zu programmieren. Ich bin ein Anfänger und komme momentan bei einem Programm einfach nicht weiter.

Ich benutze Microsoft Visual C++ 2010 für Windows Vista

Mit dem kleinen Programm was ich grade schreibe will ich folgendes Ausdrücken:


(erstmal geht es um einen Spieler, der mit Gold eine Rüstung erwerben will)

Es wird erstmal gefragt, ob man eine Rüstung erwerben möchte Ja/Nein

Wenn ja, dann wird gefragt wv Gold man hat.

Wenn nein, dann wird gesagt: OK, danke für Ihren Besuch

Der Preis der Rüstung liegt bei 5000, also wenn man mehr als tausend hat bekommt man die Rüstung, wenn nicht dann halt nicht.


Code:
#include <iostream>
#include <string>
using namespace std;
int main()

{
	
	
	char Ja;
	char Nein;

	cout << "Wollen Sie eine Rüstung erwerben ? Ja/Nein " << endl;
	cin  >> Ja;
	
	getchar();

	
	
	int Preis = 5000;
	int Gold;



if(Ja)

	 {
	
	cout << "Geben Sie ein, wieviel Gold Sie besitzen";
	cin  >> "Gold: " 
	
	}
	
	else

	{


	cout << "OK, trotzdem vielen Dank für Ihren Besuch. " << endl;

	}



if(Gold>Preis)
	
	{
		cout << "Sie haben die Ruestung erfolgreich erworben. " << endl;
	}
	
	else

	{
		cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. "
	}
	
	

	getchar();


	return 0;

}


Bei mir funktioniert es einfahc nicht, wenn ich es debugge. Wo liegt der Fehler ?

Danke
 
Code:
if(Ja)
wenn Ja ungleich 0 ist, dann ...
Vielleicht ist eher "Ja=='j'" gemeint?

Code:
if(Gold>Preis)
Variable Gold ist uninitialisiert. Wenn man also "Nein" eingibt, womit wird dann der Preis verglichen?

funktioniert es einfahc nicht , wenn ich es debugge.
Hm, bei mir compiliert der Code erst gar nicht ;).
Code:
CDW@highlander-jr:~ % c++ cpptest.cpp
cpptest.cpp:29:7: error: invalid operands to binary expression ('istream' (aka 'basic_istream<char>') and 'const char *')
        cin  >> "Gold: " 
        ~~~  ^  ~~~~~~~~
...

cpptest.cpp:53:82: error: expected ';' after expression
                cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. "
                                                                                               ^
                                                                                               ;
 
Code:
if(Ja)
wenn Ja ungleich 0 ist, dann ...
Vielleicht ist eher "Ja=='j'" gemeint?

Code:
if(Gold>Preis)
Variable Gold ist uninitialisiert. Wenn man also "Nein" eingibt, womit wird dann der Preis verglichen?


Hm, bei mir compiliert der Code erst gar nicht ;).
Code:
CDW@highlander-jr:~ % c++ cpptest.cpp
cpptest.cpp:29:7: error: invalid operands to binary expression ('istream' (aka 'basic_istream<char>') and 'const char *')
        cin  >> "Gold: " 
        ~~~  ^  ~~~~~~~~
...

cpptest.cpp:53:82: error: expected ';' after expression
                cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. "
                                                                                               ^
                                                                                               ;


Vielen vielen Dank für deine Antwort ich habe jetzt was Verändert


Code:
#include <iostream>
#include <string>
using namespace std;
int main()

{
	
	
	char Ja;
	char Nein;

	cout << "Wollen Sie eine Rüstung erwerben ? Ja/Nein " << endl;
	cin  >> Ja;
	
	getchar();

	
	
	int Preis = 5000;
	int Gold;



if(Ja=='j')

	 {
	
	cout << "Geben Sie ein, wieviel Gold Sie besitzen";
	cin  >> Gold; 
	
	}
	
	else

	{


	cout << "OK, trotzdem vielen Dank für Ihren Besuch. " << endl;

	}



if(Gold>=Preis)
	
	{
		cout << "Sie haben die Ruestung erfolgreich erworben. " << endl;
	}
	
	else

	{
		cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. "
	}
	
	

	getchar();


	return 0;

aber irgendwie klappt das immer noch nicht. Ich sitze schon seit heute morgen dadran ich weiß nicht was falsch ist :( :( :(
 
aber irgendwie klappt das immer noch nicht.
Nochmal:
Der Code kompiliert erst gar nicht. Ich habe zwar den MS VS Compiler nicht zur Hand, aber sehr große Zweifel daran, dass dieser vergessene Semicolons akzeptiert.
Code:
cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. "

Daher ist auch "klappt net" immer eine sehr ungeeignete Beschreibung - klappt die Compilierung nicht oder will es mit der Programmlogik nicht klappen?


Code:
int Gold;
...
if(Ja=='j')

	 {
	
	cout << "Geben Sie ein, wieviel Gold Sie besitzen";
	cin  >> Gold; 
...
if(Gold>=Preis)
Auch hier: was passiert, wenn als Antwort kein 'j' eigegeben wurde? womit wird dann "Gold>=Preis" verglichen? Und warum eigentlich möchte man es trotz der negativen Antwort vergleichen?

Code:
#include <iostream>
#include <string>
#include <cstdio>
#include <cctype>
using namespace std;
int main(){
  char Ja;
  char Nein;
  
  cout << "Wollen Sie eine Rüstung erwerben ? Ja/Nein " << endl;
  cin  >> Ja;  
  getchar();
	
  int Preis = 5000;
  int Gold = 0;

  if(tolower(Ja)=='j'){
	
    cout << "Geben Sie ein, wieviel Gold Sie besitzen";
    cin  >> Gold; 
    
    if((Gold>=Preis)){
      cout << "Sie haben die Ruestung erfolgreich erworben. " << endl;
    } else {
      cout << "Leider, haben Sie nicht genug Gold, um diese Ruestung   zu erwerben. ";
    }
    getchar();    
  } else {    
    cout << "OK, trotzdem vielen Dank für Ihren Besuch. " << endl;
  }
  return 0;
}
Sollte man zwar nicht als C++ Musterbeispiel ansehen - aber die Programmlogik sollte hier stimmen:
#include <cstdio> => wenn man schon getchar verwendet, sollte man auch den korrekten Header angeben.
#include <cctype> => hier sollte "tolower" deklariert sein.
 
Zurück
Oben