Я пытаюсь сделать математическую программу викторины на C, у меня пока есть это, но я не могу понять, что не так - PullRequest
0 голосов
/ 12 марта 2012

После ввода первого ответа код вылетает. Также говорится, что память неудачно распределена. Как я могу это исправить?

#include <stdio.h>
#include <stdlib.h>

#include <string.h>
#include <time.h>

int main(void)
{
  int i;
 srand(time(NULL));
 int *num1;
 int *num2;
 int response;
 int *answer;
 char *result;

 printf("\nMath Quiz\n");
 printf("Enter # of problems: ");
 scanf("%d", &response);

в зависимости от количества вопросов, которые пользователь желает ответить, выделите достаточно памяти для хранения данных вопроса

num1 = (int *)calloc(response, sizeof(int));
num2 = (int *)calloc(response, sizeof(int));
answer = (int *)calloc(response, sizeof(int));
result - (char *)calloc(response, sizeof(char));

if(num1 == NULL || num2 == NULL || answer == NULL || result == NULL)
{
printf("memory allocation unsucessful\n");
}  //end if

for(i=0; i<response; i++)
{

num1[i] = (rand() % 12)+1;
num2[i] = (rand() % 12)+1;

printf("%d * %d = ", num1[i], num2[i]); //somewhere at this point the program messes up
scanf("%d", &answer[i]);

if(answer[i]= num1[i] * num2[i])
{
    result[i] = 'c';
}

else
{
    result[i] = 'i';
}  
}  //end for loop

 printf("Quiz Results\n");
 printf("Question\tYour Answer\tCorrect");

 for(i=0; i<response; i++);
 {
          if(result[i] == 'c')
          {
                        printf("%d * %d\t\t%d\t\tYES",num1[i],num2[i],answer[i]);
          }

          else
          {
                        printf("%d * %d\t\t%d\t\tNo",num1[i],num2[i],answer[i]);
        }
} //end for loop      



free(num1);
free(num2);
free(answer);
free(result);

system("pause");
return 0;

} // end main

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

answer[i]= num1[i] * num2[i]

следует читать

answer[i] == num1[i] * num2[i]

= для назначений, == для сравнений.

иresult - (char *)calloc(response, sizeof(char));

следует читать

result = (char *)calloc(response, sizeof(char));

Если есть другие проблемы, вам нужно быть более конкретным, чем «программа испортилась».

Кроме того, не приводите возвращаемое значение malloc или calloc.Прочитайте Я разыграю результат malloc? .

0 голосов
/ 12 марта 2012

Может быть, это ответ:

результат - (char *) calloc (ответ, sizeof (char));

'-' должно быть '='.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...