C++ Anfänger Problem. Hilfe wäre nett

Anio

Grünschnabel
Hallo Leute und erstmal Grosses Kompliment an das Forum und die Community. Finde die Antworten immer sehr hilfreich und die Leute sind nicht so abgeneigt und antworten nicht gleich so das man keine lust hat weiter zu machen.
Villeicht bin ich der erste bei dem es so passiert.

Also zu mir habe gerade angefangen programmieren zu lernen. Arbeite gerade das Buch "C++ Programmieren mit einfachen Beispielen" von Dirk Louis ab. Bin bei den Klasse angelangt aber wollte erst mal ein Programm erstellen nach meinen Ideen.

Es geht darum das es bei der Idee um ein auto geht was tank hat energie mann muss es reparieren und tanken und man soll das ziel eingeben wohin man fahren will usw. Weitere sachen wollte ich hinzufuegen aber das Problem ist das die erste Switch anweisung funktioniert aber bei der zweiten Switch anweisung wo man das Ziel eingeben soll rechnet er das tanken nicht mehr dazu oder das reparieren. So viel geschrieben fuer so eine kleine Frage aber mein erster Beitrag.
Code:
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()
{
	int tank;
	int auftanken;
	int energie;
	int reparieren;
	int eingabe;
	int ziel;
	
	srand(time(NULL));
	int zahl1 = rand() % 200 + 1;
	
	srand(time(NULL));
	int zahl2 = rand() % 800 + 1;
	

	eingabe = -1;
	tank = 100;
	energie = 1000;
	
	
	while (eingabe != 0)
	{
		cout << "Dein momentaner stand lautet: " << endl;
		cout << tank << " l" << endl;
		cout << energie << " hp" << endl;
		cout << "Auto auftanken						1" 	<< 	endl;
		cout << "Auto zur Werkstatt bringen				2" << 	endl;	
		cout << "Wohin wollt ihr fahren 					3" << 	endl;
		cout << "Zum Beenden Bitte die 0 druecken" << endl;
		
		cin >> eingabe;
		
		
		switch(eingabe)
		{
			case 0:	cout << endl;
					cout << "Das Programm wird beendet" << endl;
					break;
					
			case 1: cout << endl;
					cout << "Du hast noch " << tank << "l im Tank" << endl;
					cout << "Wie viel willst du auftanken:";
					cin >> auftanken;
					tank += auftanken;
					cout << "Jetzt hast du " << tank << "l" << endl << endl << endl;
					break;
			
			case 2:	cout << endl;
					cout << "Du hast noch: " << energie << " hp" << endl;
					cout << "Wenn du es in die Werkstatt bringst wie viel willst du dein auto heilen lassen " << endl;
					cin >> reparieren;
					energie += reparieren;
					cout << "jetzt hast du: " << energie << " hp" << endl << endl << endl;
					break;
			
			case 3:	cout << endl;
					cout << "Okay du willst dein Ziel eingeben: " << endl << endl;
					cout << "Italien						1" << endl;
					cout << "China					2" << endl;
					cout << "Spain					3" << endl;
					cout << "Oder nach Holland lachen und so			4" << endl;
					cin >> ziel;
					
					
					
					switch(ziel)
					{
						case 1:	cout << endl;
								cout << "Also nach Ita soll es gehen" << endl;
								cout << "Leide ist das Auto ziemlich kapput gegangen auf den Ita strassen " << endl;
								cout << "Die Daten von deinem Schrott Auto sind: " << endl;
								cout << energie-zahl1 << " hp" << endl;
								cout << tank-30 << " l" << endl << endl;
								break;
								
						case 2: cout << endl;
								cout << "China" << endl;
								cout << "OMG Das Auto ist total kapput." << endl;
								cout << "Die Daten von deinem Schrott Auto sind: " << endl;
								cout << energie-zahl2 << endl;
								cout << tank - 99 << endl;
								break;
								
					}
					
			
		}
	}
	
	return 0;
}

Ich weis Funktionen hätten sein können aber ich wollte nur mal das schreiben was ich auch wirklich ohne hilfe kann.
Ist nicht viel aber ich lerne noch und bin jeden tag mehr motiviert.
 
Hi und Willkommen bei tutorials.de,

versteh leider nicht ganz, wo das Problem liegt.
Kannst du sagen, was du eingibst, was dabei ausgegeben wird
und was eigentlich herauskommen sollte (aber nicht kommt)?

Generelles:
srand ist nur einmal am Anfang nötig/sinnvoll.
 
Also in der ersten switch Anweisung ist alles oke, aber bei der zweiten wenn man eingibt das man nach China will dann zieht er es von der energie und vom tank ab das soll auch so sein. Aber wenn er dann wieder in die erste switch anweisung springt dann nimmt er wieder die alten Daten.

Ich habe zwei mal srand weil er einmal eine zufällige zahl braucht nach italien und dann wieder eine zufällige nach china die grösser sein sollte.

Danke fuer die schnelle Antwort
 
C++:
//srand nur einmal
srand(time(NULL));

//rand dann mehrmals
int zahl1 = rand() % 200 + 1;
int zahl2 = rand() % 800 + 1;

C++:
case 1:
    cout << endl;
    cout << "Also nach Ita soll es gehen" << endl;
    cout << "Leide ist das Auto ziemlich kapput gegangen auf den Ita strassen " << endl;
    cout << "Die Daten von deinem Schrott Auto sind: " << endl;

    energie -= zahl1;
    tank -= 30;
    cout << energie << " hp" << endl;
    cout << tank << " l" << endl << endl;
break;

//Das Selbe für case 2
 
OMG so einfach. Vielen Dank.
Komisch das ich auf das nicht selber gekommen bin oben mache ich es richtig und dann wieder falsch. Tja habe noch viel zu lernen.
 
Zurück