Я продолжаю получать сообщение об ошибке, что «скорость» неинициализируется в этой функции ».
Может ли кто-нибудь из битой увидеть почему? Я просмотрел свой код и правильно передаю его другим функциям, и ошибка связана с этой функцией. Есть идеи?
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;
}
Вы возвращаетесь rate
в конце функции, но она может никогда не инициализироваться, потому что все присваивания находятся внутри операторов ifs, которые могут вообще не обрабатываться.
Решение:
сначала назначьте его, используя какое-то значение по умолчанию, которое вы примете, если ни один из ifs не работает:
double rate=0.0;
Если 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;
}
Если sportType_array[index]
не ‘f’, ‘g’ или ‘h’, функция переходит прямо к возврату, где она возвращает rate
, который не инициализирован.
Какое значение вы хотите вернуть, если значения в этих массивах неверны? Было бы лучше установить rate
к этому, даже если это не предполагаемый произойдет.