Informatică, întrebare adresată de Kosty1996, 9 ani în urmă

Salut , am si eu o intrebare . Ce e gresit in acest fragment de cod ? Este gresita negatia pentru caractere ? Cum pot sa rezolv ? Ce rapid sprijin

char TipJucator;
cout<<"Ce jucator esti ?";
cin>>TipJucator;
do
{
cout<<"Trebuie sa alegi ori Z ori Y";
cin>>TipJucator;
}while(TipJucator!= 'Z' || TipJucator!= 'Y');

Răspunsuri la întrebare

Răspuns de MrXDead
1
char TipJucator; 
do
 {
  cout << "Ce jucator esti ?";
  cin >> TipJucator;
  if (!(TipJucator == 'Z' || TipJucator == 'Y')) {
   cout << "Trebuie sa alegi ori Z ori Y";
  } 
} while (!(TipJucator == 'Z' || TipJucator == 'Y'));



Am inlocuit (TipJucator!= 'Z' || TipJucator!= 'Y') cu (!(TipJucator == 'Z' || TipJucator == 'Y')) deoarece while-ul va repea instructiunea (in codul tau) atata timp cat TipJucator nu este Z sau Y, deci atata timp cat valoarea propozitiei este true. De exemplu daca introducem Y, valoarea preopozitiei va fi true || false, ceea ce rezulta, in urma operatorului || (sau), ca valoarea va fi tot true. Bucata de cod poate fi de asemenea inlocuita cu (TipJucator != 'Z' && TipJucator != 'Y'), rezultatul fiind acelasi.


De asemenea am rescris putin codul deoarece de la prima introducere deja afisa eroarea "Trebuie sa alegi ori Z ori Y" chiar daca raspunsul era Z sau Y.

Kosty1996: Mersi mult
Alte întrebări interesante