Ошибка отладки! Ошибка проверки времени выполнения № 3 - PullRequest
1 голос
/ 08 декабря 2011

Я получаю эту ошибку при запуске программы.Он успешно компилируется, но дает мне несколько предупреждений о неинициализированных переменных, которые, я думал, инициализируются.Я получаю сообщение об ошибке «Ошибка отладки! Ошибка проверки времени выполнения # 3 - переменная sumMaleGPA используется без инициализации».файл.

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Ваша функция инициализации не инициализирует то, что вы думаете, потому что передаваемые параметры передаются в виде побочного значения. Вам нужно заглянуть в передавая по ссылке .

Строго говоря, из-за этого ошибка ...

int countFemale;
int countMale;
float sumFemaleGPA;
float sumMaleGPA;
float avgfGPA; 
float avgmGPA;

Эти переменные ни к чему не инициализированы. Вы могли бы сделать что-то вроде

int countFemale = 0;
int countMale = 0;
float sumFemaleGPA = 0;
float sumMaleGPA = 0;
float avgfGPA = 0; 
float avgmGPA = 0;

Возможно, чтобы улучшить ваше понимание, измените свою функцию инициализации, чтобы инициализировать значения на 1, и обратите внимание, что значения не изменяются с 0. Это потому, что вы передаете копии переменных в вашу функцию инициализации. Вы хотите передать ссылки на исходные переменные, используя оператор &.

1 голос
/ 08 декабря 2011

Ваши функции initialize и averageGPA неверны.

Любой параметр, который вы хотите изменить внутри функции, должен быть передан по ссылке :

void initialize(int &countFemale,int &countMale,float &sumFemaleGPA,float &sumMaleGPA)
void averageGPA(float &avgfGPA, float &avgmGPA, int m, int f, float &sumFemaleGPA, float &sumMaleGPA)

Как таковая, функция initialize() фактически не инициализирует переменные - следовательно, почему вы получаете ошибку отладки при первой попытке их использования.

Прямо сейчас вы передаете по значению. Параметры копируются в функцию. Затем функция модифицирует локальные копии вместо тех, которые были переданы.

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