Po pierwsze, uwaga do jakości kodu:
bool bCzyBlad =
cin.fail();
Nigdy nie pisz w taki sposób, bo patrząc na kod, wydaje się jakby to były dwie niezależne od siebie linijki kodu. Zapisuj to lepiej w jednej lini.
bool bCzyBlad = cin.fail();
Robiąc warunek taki sam to w nagłówku pętli do while, zrobiłeś rzeczywiście pętlę while.
W takim przypadku wystarczy, że zrobisz to tak:
while ( bCzyBlad )
{
cout<< "Prosze wprowadz cyfe, nie litere - wieksza od 0 :" << endl;
cin >> liczba;
bCzyBlad = cin.fail();
cin.clear();
cin.ignore( numeric_limits < streamsize >::max(), '\n' );
}
Jak porównujesz wartości w warunku lub nagłówku pętli to ==, a nie =.
Poza tym, zauważ, że powyżej usunąłem zmienną bCzyBlad2, bo można użyć tej samej co wcześniej. Pętla będzie się wykonywać dopóki użytkownik nie wprowadzi poprawnej wartości.