Nie mogę skompilować programu

0

Witam, mam mały problem z instrukcją switch. Domyślam się że to banał i robię głupi błąd ale nawet po napisaniu tego na nowo wciąż to samo. Tutaj program:

#include "stdafx.h"
#include "iostream"
#include "string"
#include "conio.h"

using namespace std;
int main()
{
	string haslo;
	cout << "ABY WEJSC WPISZ HASLO:" << endl;
	getline(cin, haslo);
	if (haslo == "1")
	{
		system("cls");
	}
	else
	{
		cout << "Zle haslo";
		_getch();
		return 0;
	}

		int x;
		cout << "WW          WWW          WW     III     TTTTTTTTTTTTTT         AAA              MMM     MMM      YY     YY    !!!" << endl;
		cout << "WW          WWW          WW     III          TTTT             AA AA            MM MM   MM MM      YY   YY     !!!" << endl;
		cout << " WW        WW WW        WW      III          TTTT            AA   AA          MM   MM MM   MM      YY YY      !!!" << endl;
		cout << " WW        WW WW        WW      III          TTTT           AA     AA        MM     MMM     MM      YYY       !!!" << endl;
		cout << "  WW      WW   WW      WW       III          TTTT          AAAAAAAAAAA       MM      M      MM      YYY" << endl;
		cout << "   WW    WW     WW    WW        III          TTTT         AA         AA     MM               MM     YYY       !!!" << endl;
		cout << "     WWWW         WWWW          III          TTTT        AA           AA    MM               MM     YYY       !!!" << endl << endl << endl;

		cout << "Wybierz program jaki chcesz uruchomic:" << endl;
		cout << "1. Program generujacy gwiazdki w linii" << endl;
		cout << "2. Program generujacy choinke" << endl;
		cout << "3. Program generujacy trojkat:" << endl;

		switch (x)
		{
		case 1:
		{
			int liczbagwiazdek;
			cout << "Podaj z ilu gwiazdek ma skladac sie linia" << endl;
			cin >> liczbagwiazdek;
			for (int i = 1; i <= liczbagwiazdek; i++)
				cout << "*";
			break;
		}

		case 2:
		{
			int h;
			cout << "jak wysoka ma byc choinka?" << endl;
			cin >> h;
			for (int i = 1; i <= h - 1; i++)  // petla od wierszy
			{
				for (int k = 1; k <= h - i - 1; k++) //petla od spacji
					cout << " ";
				for (int j = 1; j <= 2 * i - 1; j++) //petla od gwiazdek
					cout << "*";
				cout << endl;
			}
			for (int pien = 1; pien <= h - 2; pien++)
			{
				cout << " ";
			}
			cout << "#";
			break;
		}

		case 3:
		{
			int ile, i, j, k;;
			cout << "Podaj ilosc linii:" << endl;
			cin >> ile;
			for (i = 1; i <= ile; ++i) // petla drukująca wiersze
			{
				for (j = i; j < ile; ++j) // petla drukująca spacje
					cout << " ";
				for (k = 1; k <= (2 * i - 1); ++k) // petla rysująca gwiazdki
					if (k == 1 || k == (2 * i - 1) || i == ile)
						cout << "*";
					else
						cout << " ";
				cout << "\n";
			}
			break;
		}


		default:
			cout << "Błąd";
		}


		_getch();
    return 0;
}

Problem leży mniej więcej po środku, przy switch. Wprowadziłem nad nim zmienną x, ale po kompilacji wyskakuje błąd "uninitialized local variable 'x' used...". Mam nadać jakąś bazową wartość tej zmiennej? Szukałem po wątkach ale nie umiałem wywnioskować nic konkretnego lub tego czego bym nie wiedział. Pisałem w Visual Studio, z góry dzięki za odpowiedź. Tak nawiasem mówiąc, program wczoraj działał, następnego dnia nie zmieniając nic po prostu nie chce przepuścić kompilacji przez tego switcha :/.

0

Skoro sprawdzasz w switchu jaką wartość ma zmienna 'x' to chyba logiczne że musi ona mieć jakąś wartość. W Twoim przypadku nie ma stąd ten błąd.

0

Czyli rozumiem że mam przypisać x jakąś wartość, naprzykład

x=1;

?

0

Tak, ale może po prostu spróbuj. Nic przecież się nie stanie skoro i tak nie działa. :]

0

To nie ma sensu. Jak przypiszę x wartość np. 1 to switch automatycznie uruchomi 1 opcję instrukcji i nie daje możliwości wyboru. Pomyślę nad tym jutro łeb mnie boli od tych banałów...

0

Switch wybiera przypadek w zależności od wartości przekazywanej zmiennej w twoim przypadku x ... Proponuję jeszcze raz przeczytać co to jest switch i jak go stosować.

0

No to może wczytasz do zmiennej x wartość z klawiatury zaraz po wyświetleniu menu a przed switchem.

0

Dobra, nigdy więcej nie założę wątku w momencie chwilowych głupawek...zapomniałem zrobić wejście zmiennej x

cin>>x;

, wszystko już działa...

1 użytkowników online, w tym zalogowanych: 0, gości: 1