您的位置:首页 > 其它

UVa 489 Hangman Judge

2016-06-12 14:52 369 查看
刽子手游戏,计算机提出一个字符串,每一次可以猜一个字母,做多可以猜错7次。

#include<iostream>
#include<string>

using namespace std;

bool find(const char a, const string &s, bool *bArr)
{
bool find = false;
for (string::const_iterator iter = s.begin(); iter != s.end(); ++iter)
if (*iter == a && !bArr[iter - s.begin()]) {
find = true;
bArr[iter - s.begin()] = true;
}
if (find == true)
return true;
else
return false;
}

int main()
{
#ifndef UVa
FILE *fp;
freopen_s(&fp, "data.in.txt", "r", stdin);
freopen_s(&fp, "data.out.txt", "w", stdout);
#endif;
int round;
string sGame;
string sContestant;
int strokeCnt = 0;

while (cin >> round) {
if (round == -1)
break;
strokeCnt = 0;
cin >> sGame >> sContestant;

bool *bArr = new bool[sGame.size()];
for (int i = 0; i < sGame.size(); ++i)
bArr[i] = false;

for (string::iterator iter = sContestant.begin(); iter != sContestant.end(); ++iter) {
bool bFnd = find(char(*iter),sGame,bArr);
if (!bFnd) {
strokeCnt++;
if (strokeCnt == 7)
break;
}

bool bTemp = true;
for (int i = 0; i < sGame.size(); ++i)
if (bArr[i] == false) {
bTemp = false;
break;
}//endif
if (bTemp)
break;
}//endfor
cout << "Round " << round << endl;
bool bTemp = true;
for (int i = 0; i < sGame.size(); ++i)
if (bArr[i] == false) {
bTemp = false;
break;
}
if (strokeCnt == 7)
cout << "You lose." << endl;
else if (bTemp == true)
cout << "You win." << endl;
else
cout << "You chickened out." << endl;

delete[] bArr;
bArr = 0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: