당신이 친구와 함께 식당에서 외식을 하고 있는데 그 비용을 공평하게 나누고 싶다고 가정해 보십시오. 세금이 추가된 청구서가 도착하기 전에 지불해야 할 금액을 예상할 수 있습니다. 이 문제에서는 청구 금액, 세금 및 팁을 기준으로 각자가 지불해야 할 금액을 계산하는 함수를 완성합니다.
Hints
- 세금과 팁은 백분율로 입력됩니다. 총계를 계산하기 전에 이를 소수 값으로 변경할 수 있습니다.
- 팁은 int로 입력되므로 int를 int로 나누면 int가 반환된다는 점을 명심하세요!
- 여기에서의 연산 순사는 덧셈과 뺼셈 이전에 곱셈과 나눗셈이 수행되는 대수학의 순서와 정확히 동일합니다.

함수에서는 입력 매개변수인 청구서, 세금, 팁을 사용하여 최종 금액을 계산해야 합니다. 그러나 이러한 값은 백분율이므로 계산에 사용할 수 있도록 보다 적절한 형식으로 변환하려면 몇 가지 작업을 수행해야 합니다.
팁을 계산하기 전에 청구서 금액에 세금을 추가해야 합니다. 마지막으로 청구 금액, 세금 및 팁을 포함하여 전체 금액의 정확히 절반을 반환합니다.
// Calculate your half of a restaurant bill
// Data types, operations, type casting, return value
#include <cs50.h>
#include <stdio.h>
float half(float bill, float tax, int tip);
int main(void)
{
float bill_amount = get_float("Bill before tax and tip: ");
float tax_percent = get_float("Sale Tax Percent: ");
int tip_percent = get_int("Tip percent: ");
printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent));
}
// TODO: Complete the function
float half(float bill, float tax, int tip)
{
float total = bill * (1 + tax / 100);
total = total * (1 + (float)tip / 100);
float value = total / 2;
return value;
}

이 문제에서 중요한 것은 문제에서도 강조하듯,
백분율을 소수로 변환하여 계산해주는 것과, int를 float으로 type casting 해주는 것이다.
처음에 형 변환을 안해줘서 답이 틀리게 나왔지만 힌트를 보고 구글링하여 형 변환을 해주었다.
check50 또는 과제 페이지의 How to Test Your code에 나와있는 답을 비교하여
리턴값(절반)이 풀이와 동일하면 함수를 알맞게 작성한 것이다.
정확한 코드풀이는 찾을 수 없는 것으로 보아 계산식보다는 올바른 답을 도출해내는 데에 의의를 둔 과제인 듯 하다.