Pomimo zabezpieczenia przed wprowadzeniem złego typu danych program "świruje"

0

Hej, jako, że dopiero uczę się programowania program jest związany z zadaniem. Wszystko działa pięknie i ładnie i właściwie zrobiłem wszystko zgodnie z treścią. Postanowiłem dodatkowo zabezpieczyć program przed wpisywaniem liter, jednak wszelkie próby skończyły się fiaskiem. Zarówno kompilator visuala jak i codeblocksa nie kompilują tak jakbym chciał więc coś z mojej winy musi być ^^ Próbowałem też z isdigit() oraz innymi dziwnymi metodami podawanymi na internetach, a aktualnie stoję na czymś takim. Ktoś będzie w stanie coś podpowiedzieć?

//#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cctype>
#include <climits>

void menu();
void roslina();
void pianista();
void drzewo();
void gra();

using namespace std;

int main()
{
	menu();
	int wybor;
	while (!(cin >> wybor) && wybor > 5 && wybor < 1)
	{
	    cin.clear();
	    cin.sync();
		cout << "Podaj liczbe z przedzialu 1-4!: ";
	}
	while(wybor != 5)
	{
		switch (wybor)
		{
		case 1 : roslina();
			break;

		case 2 : pianista();
			break;

		case 3 : drzewo();
			break;

		case 4 : gra();
			break;

		default:
			cout << "Nie lubie takiego wyboru!";
		}
		cout << endl;
		menu();
	while (!(cin >> wybor) && wybor > 5 && wybor < 1)
	{
	    cin.clear();
	    cin.sync();
		cout << "Podaj liczbe z przedzialu 1-4!: ";
	}
	}
    return 0;
}

void menu()
{
	cout << "Wybierz opcje z listy ponizej wpisując numer" << endl;
	cout << "1) Roslina\n";
	cout << "2) Pianista\n";
	cout << "3) Drzewo\n";
	cout << "4) Gra\n";
	cout << "5) Wyjdz\n";
}

void roslina()
{
	cout << "Jestes roslina!";
}

void pianista()
{
	cout << "I tak nie umiesz grac...";
}

void drzewo()
{
	cout << "Nie, to akurat jest sciana - przyznaj sie co brales?!";
}

void gra()
{
	cout << "Przegrales!";
}
1
wybor > 5 && wybor < 1

Ten warunek jest niemożliwy do spełnienia (nie ma liczb większych od 5 i jednocześnie mniejszych od 1), mylisz && z ||. Poza tym, zrób sobie funkcję do ekstrakcji danych z wejścia standardowego, zamiast kopiować kod.

0

Dzięki wielkie! Naprawiło mi to problem :)

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