- 70
- 2
- CPU
- intel core i5-2310m
- HDD
- 1TB Western digital 5400rpm
- RAM
- 8gb ddr3
- GPU
- amd ati 7310m
- Monitor
- samsung E2220
- OS
- Windows 7; ubuntu 14.04; Kali linux; debian 7
Ho un problema con questo codice c++ , che simula la morra cinese (sasso, carta, forbice) tra un giocatore ed il pc; l'output atteso è quello in bianco(prima immagine), mentre l'output che ottengo è quello in nero (seconda immagine); ho provato a modificare il codice più volte, ma non sono riuscito a risolvere il problema.
1)
2)
Codice:
#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
enum segno {sasso, carta, forbice};
int main()
{
srand(time(0));
int contpc=0;
int contpl=0;
int gioca;
while ((contpc!=3)&&(contpl!=3))
{
cout << "Inserisci la giocata del primo giocatore (1: sasso, 2: carta, 3: forbice):";
cin>>gioca;
switch (gioca)
{
case (1):
cout<<"hai giocato sasso"<<endl;
break;
case (2):
cout<<"hai giocato carta"<<endl;
break;
case (3):
cout<<"hai giocato forbice"<<endl;
break;
default:
while (gioca!=1 && gioca!=2 && gioca !=3)
{
cout << "Inserisci la giocata del primo giocatore (1: sasso, 2: carta, 3: forbice):";
cin>>gioca;
}
}
segno s;
int m=rand()%3;
s=static_cast<segno>(m);
switch (s)
{
case sasso:
cout<<"il PC ha giocato sasso"<<endl;
break;
case forbice:
cout<<"il PC ha giocato forbice"<<endl;
break;
case carta:
cout<<"il pc ha giocato carta"<<endl;
break;
}
if (((gioca==1)&& (s==sasso))||((gioca==2)&&(s==carta))||((gioca==3)&& (s==forbice)))
{
cout<<"Pari:"<<endl;
cout<<contpl<<"-"<<contpc<<endl;
}
else if (((gioca==1)&& (s==forbice))||((gioca==2)&&(s==sasso))||((gioca==3)&& (s==carta)))
{
contpl++;
cout<<"Vinci tu:"<<endl;
cout<<contpl<<"-"<<contpc<<endl;
}
else if (((gioca==1)&& (s==carta))||((gioca==2)&&(s==forbice))||((gioca==3)&& (s==sasso)))
{
contpc++;
cout<<"Vince il PC:"<<endl;
cout<<contpl<<"-"<<contpc<<endl;
}
}
if (contpc<contpl)
cout<<"Hai vinto la sfida!"<<endl;
else if (contpl<contpc)
cout<<"Il PC ha vinto la sfida!"<<endl;
return 0;
}
1)
2)