Hoger lager fout in random

Status
Niet open voor verdere reacties.

BreVDD

Gebruiker
Lid geworden
9 apr 2009
Berichten
104
Code:
/* 
auteur: Brecht VDD
datum: 24 april

Programma (spel): De bedoeling van het spel is dat je raad of het volgende getal dat komt hoger of lager zal zijn.
*/
#include <ctime>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <windows.h>
#include <Winbase.h>
using namespace std;
void main()
{
	int x;
	int y;
	int hoger_lager;
	int hoger_lager2;
	string voornaam;
	int keuze;
	string achternaam;
	cout << "Typ je voornaam: "; // naam vragen
	cin >> voornaam;
	cout << "Achternaam: ";  // naam vragen
	cin >> achternaam;
	system("cls");
	system("cls");
	cout << "De computer heeft je een getal en jij moet zeggen of het volgende getal hoger of lager is door middel van 'h'(hoger) en 'l'(lager).\nJe kan het een vast aantal keer achter elkaar spelen of spelen tot je mist.";
	Sleep(4000);
	cout << "\nDe cijfers gaan tot 13:\n1 t.e.m 10 ==> gewone kaarten\n\t11==> boer\n\t12 ==> dame\n\t13 ==> koning";
	Sleep(4000);
	cout << "\nTyp enter om verder te gaan.";
	cin.get();
	cin.get();
	system("cls");
	while (true)
	{
		cout <<"Typ 1 om het spel te spelen of 2 om te stoppen of 3 voor uitleg. ";
		cin >> keuze;
		if (keuze == 1)
		{
			system("cls");
			cout << "#####  #####   ####   ### #  # #####";
			cout << "\n #  #   #   #  #  #  #    #  # # # #";
			cout << "\n #  #   #   #  #    #     #  #   #";
			cout << "\n ####   #  #   #  # #     ####   #";
			cout << "\n #   #  ###    #### #     ####   #";
			cout << "\n #   #  #  #   #  # #     #  #   #";
			cout << "\n #   #  #   #  #     #    #  #   #";
			cout << "\n###### ##    # ####   ### #  #   #\n";
			Sleep(2000);
			cout << "Typ 1 om het spel te spelen tot je mist \nof typ 2 om het een bepaalt aantal keer te gokken \nof kies 3 om terug naar het hoofdmenu te gaan.";
			int keuze1;
			cin >> keuze1;
			if (keuze1 == 1)
			{
// nog mee bezig 
			}
			if (keuze1 == 2)
			{
				
				cout << "Typ het aantal keer dat je wil gokken: ";
				cin >> y;
				x = 1;
				system("cls");
				cout << "Laten we beginnen!!!";
				while (x <= y)
				{
				
				if (x ==2 || x==4 || x==6 || x==8 || x==10 || x == 12 || x == 14 || x == 16)
				{
				cout << "Beurt " << x << ": " << hoger_lager2;
				srand((unsigned int) time( NULL ) );
				hoger_lager = (int) (rand() % 12) + 1;
				}
				else
				{
				cout << "Beurt " << x << ": " << hoger_lager;
				srand((unsigned int) time( NULL ) );
				hoger_lager2 = (int) (rand() % 12) +1;
				}
				cout << "Typ <h> voor hoger en <l> voor lager of <g> voor gelijk.";
				string controle;
				cin >> controle;
				if (controle == "h")
				{
					if (hoger_lager < hoger_lager2)
					{
						cout << "Het is inderdaad hoger!!!\a";
						x++;
						continue;
					}
					if (hoger_lager > hoger_lager2)
					{
						cout << "Het was lager!!!";
						x = y;
						Sleep(3000);
						break;
					}
				}
				if (controle == "l")
				{
					if (hoger_lager < hoger_lager2)
					{
						cout << "Het was lager!!!";
						x = y;
						Sleep(3000);
						break;
					}
					if (hoger_lager > hoger_lager2)
					{
						cout << "Het is inderdaad lager!!!\a";
						x++;
						continue;
					}
				}
				if (controle == "g")
				{
					if (hoger_lager == hoger_lager2)
					{
						cout << "Het is inderdaad gelijk!!!";
						x++;
						continue;
					}
					if (hoger_lager != hoger_lager2)
					{
						cout << "Het is niet gelijk!!!";
						x=y;
						Sleep(3000);
						break;
					}
				}
			}
			}
			if (keuze1 == 3)
			{
				system("cls");
				cout << " <== Terug naar hoofdmenu!";
				Sleep(2000);
				system("cls");
				continue;
			}
			if (keuze1 !=1 && keuze1 !=2 && keuze1 !=3)
			{
				cout << "Kies een geldig getal!!! ==> U wordt teruggebracht naar het hoofdmenu.";
			}
		continue;
		}
		if (keuze == 2)
		{
			system("cls");
			cout << "Dag " << voornaam <<" " << achternaam << ".";
			Sleep(2000);
			system("cls");
			cout << "\t\tCopyright BreVDD Company";
			Sleep(2000);
			break;
		}
		if (keuze == 3)
		{
			system("cls");
			cout << "De computer heeft je een getal en jij moet zeggen of het volgende getal hoger of lager is door middel van 'h'(hoger) en 'l'(lager).\nJe kan het een vast aantal keer achter elkaar spelen of spelen tot je mist.";
			Sleep(4000);
			cout << "\nDe cijfers gaan tot 13:\n1 t.e.m 10 ==> gewone kaarten\n\t11==> boer\n\t12 ==> dame\n\t13 ==> koning";
			Sleep(4000);
			cout << "\nTyp enter om verder te gaan.";
			cin.get();
			system("cls");
			continue;
		}
		if (keuze != 1 && keuze !=2 && keuze !=3)
		{
			cout << "Het getal " << keuze << " is niet geldig: kies uit 1,2 of 3.";
			Sleep(1000);
			continue;
		}
	}

}

Hij wil de random niet doen. er komt een fout: "Run-time check failure #3 - the variable'hoger_lager' is being used whithout being initialized".

Wat bedoelen ze daar mee?
 
Over het algemeen betekend deze fout dat je een variabele wil gebruiken maar er nog geen waarde aan hebt toegekend.
Als ik je script zo snel doorkijk dan ken je hier de variabelen toe:

Code:
				if (x ==2 || x==4 || x==6 || x==8 || x==10 || x == 12 || x == 14 || x == 16)
				{
				cout << "Beurt " << x << ": " << hoger_lager2;
				srand((unsigned int) time( NULL ) );
				hoger_lager = (int) (rand() % 12) + 1;
				}
				else
				{
				cout << "Beurt " << x << ": " << hoger_lager;
				srand((unsigned int) time( NULL ) );
				hoger_lager2 = (int) (rand() % 12) +1;
				}

Zoals je ziet zal hij of hoger_lager toekennen of hoger_lager2, maar daarna doe je:
Code:
					if (hoger_lager < hoger_lager2)
terwijl één van deze twee variabelen nog geen waarde heeft.

Ik denk dat dat het is, maar als anderen nog iets te zeggen hebben (of dat ik er volledig naast zit), reacties zijn welkom!!
 
Over het algemeen betekend deze fout dat je een variabele wil gebruiken maar er nog geen waarde aan hebt toegekend.
Als ik je script zo snel doorkijk dan ken je hier de variabelen toe:

Code:
				if (x ==2 || x==4 || x==6 || x==8 || x==10 || x == 12 || x == 14 || x == 16)
				{
				cout << "Beurt " << x << ": " << hoger_lager2;
				srand((unsigned int) time( NULL ) );
				hoger_lager = (int) (rand() % 12) + 1;
				}
				else
				{
				cout << "Beurt " << x << ": " << hoger_lager;
				srand((unsigned int) time( NULL ) );
				hoger_lager2 = (int) (rand() % 12) +1;
				}

Zoals je ziet zal hij of hoger_lager toekennen of hoger_lager2, maar daarna doe je:
Code:
					if (hoger_lager < hoger_lager2)
terwijl één van deze twee variabelen nog geen waarde heeft.

Ik denk dat dat het is, maar als anderen nog iets te zeggen hebben (of dat ik er volledig naast zit), reacties zijn welkom!!

ok bedankt
Ik heb het kunnen oplossen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan