Необходимо присвоить возвращаемое значение calcFee()
локальной переменной main()
total_fee
:
total_fee = calcFee(category, type, member) ;
Кроме локальных переменных main()
category
, type
и member
не используются в main()
и не изменяются с помощью calcFee()
, который изменяет только копию этих унифицированных переменных.Исходный вопрос гласит, что входные данные предоставляются через параметры, поэтому вы не должны принимать входные данные внутри функции.Вместо этого category
, type
и member
должны быть присвоены значения из ввода перед вызовом calcFee()
.Этот вопрос вовсе не требует, чтобы вы принимали пользовательский ввод, и гарантирует, что ввод действителен (например, тестирование в нижнем регистре не требуется), поэтому следующее решение является подходящим:
double calcFee( char category, int type, int member )
{
double total_fee = 0 ;
if( category == 'S' )
{
switch(type)
{
case 1:
{
total_fee = 50.00 * member;
}
break;
case 2:
{
total_fee = 75.00 * member;
}
break;
}
}
else if(category == 'T')
{
switch(type)
{
case 1:
{
total_fee = 100.00 * member;
}
break;
case 2:
{
total_fee = 150.00 * member;
}
break;
}
}
return total_fee;
}
Функция может быть значительно упрощена:
// Pre-conditions: category = `S` or `T`
// type = 1 or 2
// member > 0
double calcFee( char category, int type, int member )
{
double total_fee = member * 100 ; // Primary student fee
// Secondary staff/students pay 50% more
if( type == 2 )
{
total_fee *= 1.5 ;
}
// Students pay half secondary/primary fee
if( category == 'S' )
{
total_fee /= 2.0 ;
}
return total_fee ;
}
Обратите внимание на использование комментариев для объяснения цели кода.Я ожидаю, что ваш репетитор сбросит оценки за некомментированный код.
Предварительные условия указывают на вещи, которые вы считаете истинными при вызове функции, поэтому не нужно проверять - проверка является обязанностью вызывающего кода - в противном случае в реальном приложении вы будете неоднократно проверять одни и те же данныеснова и снова, а не только в одном месте.
Обратите внимание также на тип member
- нет смысла иметь нецелое число членов.