массивы — Неинициализированная проблема с переполнением стека

Я продолжаю получать сообщение об ошибке, что «скорость» неинициализируется в этой функции ».

Может ли кто-нибудь из битой увидеть почему? Я просмотрел свой код и правильно передаю его другим функциям, и ошибка связана с этой функцией. Есть идеи?

double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else if (userAge_array[index] > 25) {
rate = 55.95;
}
}
if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else if (userAge_array[index] > 25) {
rate = 65.95;
}
}
if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else if (userAge_array[index] > 25) {
rate = 92.95;
}
}

return rate;
}

-3

Решение

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

Решение:

сначала назначьте его, используя какое-то значение по умолчанию, которое вы примете, если ни один из ifs не работает:

double rate=0.0;
4

Другие решения

Если sportType_array[index] не является 'f', 'g', или же 'h', ни один из if блоки будут выполняться. Вы должны изменить это на if/else if а затем добавить окончательный else оговорка, когда ничего не совпадает.

Но, скорее всего, проблема в том, что userAge_array[index] == 25, Ты устанавливаешь rate когда меньше 25 или больше чем 25, но никогда не устанавливайте rate когда это точно равно 25, Попробуйте использовать else вместо else ifТаким образом, вы охватываете все дела.

double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else {
rate = 55.95;
}
}
else if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else {
rate = 65.95;
}
}
else if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else {
rate = 92.95;
}
}
else {
rate = 0.0;
}

return rate;
}
1

Если sportType_array[index] не ‘f’, ‘g’ или ‘h’, функция переходит прямо к возврату, где она возвращает rate, который не инициализирован.

Какое значение вы хотите вернуть, если значения в этих массивах неверны? Было бы лучше установить rate к этому, даже если это не предполагаемый произойдет.

0
По вопросам рекламы [email protected]