побуждает пользователя снова играть в C - PullRequest
1 голос
/ 24 февраля 2012

Я уже спрашивал здесь в другом посте, но ни один из ответов не помог моей программе. У меня есть программа, которая запрашивает у пользователя числа и вычисляет среднее значение, медиану и режим. Затем программа должна предложить пользователю снова сыграть, и если пользователь выберет y или Y, она должна воспроизвести игру, n или N, чтобы остановить, и если что-то еще, кроме этого, сказать недействительным и, пожалуйста, наберите y или n для бла бла ты понял. вот мой основной и мой метод goAgain ():

#define MAX 25
#include<stdio.h>
#include <stdbool.h>
#include <time.h>
#include <stdlib.h>

int readTotalNums();
void fillArray(int total, int nums[]);
void sortArray(int nums[], int total);
double findMean(int nums[], int total);
double findMedian(int nums[], int total);
int findMode(int nums[], int total);
void printResults(double mean, double median, double mode);
bool goAgain();

int main()  {
int nums[MAX];
int total;
double mean, median, mode;
bool b;
do {
    total = readTotalNums();
    fillArray(total, nums);
    sortArray(nums, total);
    mean = findMean(nums, total);
    median = findMedian(nums, total);
    mode = findMode(nums, total);
    printResults(mean, median, mode);
    b = goAgain();
} while (b==true);
return 0;
}

// здесь другие методы

bool goAgain() {
char *temp;
printf("\nWould you like to play again(Y/N)? ");
scanf("%c", &temp);
while (temp != 'n' && temp != 'N' && temp != 'y' && temp != 'Y') {
    printf("\nI am sorry that is invalid -- try again");
    printf("\nWould you like to play again(Y/N)? ");
    scanf("%c", &temp);
}
if (temp == 'y' || temp == 'Y') {
    return true;
} else {
    return false;
}
}

каждый раз, когда я играю в игру, и она попадает в подсказку, все, что я печатаю, просто ничего не делает и повторяет неверную попытку еще раз, даже если ввод - y или N. спасибо за вашу помощь:)

Ответы [ 3 ]

4 голосов
/ 24 февраля 2012

char *temp; должно быть char temp;

2 голосов
/ 24 февраля 2012

Не объявляйте temp указателем, также вы не выделили для него память.

Вместо этого измените ваше объявление на

char temp;

0 голосов
/ 24 февраля 2012

, поскольку у вас уже есть правильный ответ, не нужно повторять это снова, поэтому я добавлю небольшой совет.

//this
if (temp == 'y' || temp == 'Y') {
    return true;
} else {
    return false;
}

//is the same as this
return temp == 'y' || temp == 'Y';


//or more generally
if(condition)
    return true
else
    return false

//is just
return condition
...