У меня есть домашнее задание, которое в основном принимает пользовательский ввод для создания игры в гольф, спрашивая, сколько лунок нужно сыграть, каков размер каждой лунки, и случайным образом генерирует, что человек получил в этой лунке, и распечатывает ее. в конце он просит пользователя сыграть снова, введите y или Y для да и n или N для нет и т. д. все в моей программе работает нормально, за исключением того, что я не могу заставить функцию воспроизведения снова работать. Вот мой код, в частности, мой основной и метод воспроизведения снова:
int main() {
int holes, par, strokes, count = 1, low, high, go;
char *shotName;
go = 1;
while (go != 0) {
count = 1;
holes = readHoles();
do {
printf("\nHole number: %i\n", count);
par = readPar(holes);
low = 1;
high = par + 5;
strokes = calcStrokes(low, high);
shotName = getName(par, strokes);
printStatement(count, par, strokes, shotName);
count++;
}while (count <= holes);
go = goAgain();
}
return 0;
}
int goAgain() {
char *temp;
printf("\nWould you like to play again(Y/N)? " );
scanf("%s", temp);
while (temp != 'y' || temp != 'Y' || temp != 'n' || temp != 'N') {
printf("\nI am sorry that is invalid -- try again\n");
printf("Would you like to play again(Y/N)? " );
scanf("%c", &temp);
}
if (temp == 'y' || temp == 'Y') {
return 1;
} else {
return 0;
}
}
Полагаю, я просто запутался, как заставить эту работу использовать циклы while или делать циклы while. Это работает, но когда я запускаю программу и дохожу до точки, где мне нужно ввести да или нет, все, что я ввожу, вызывает внезапный сбой программы. и я не знаю что делать.
в основном, я хочу, чтобы пользователь что-то ввел, и если да, играйте всю игру снова, если нет, завершите цикл, а если что-то еще, дайте им ошибку и предложите снова. любая помощь ценится сегодня вечером! : / спасибо