[This is CS50 2024] After Week1 - C언어#Half

moonstrnck·2024년 1월 12일

CS50

목록 보기
2/13


[CS50 Practice - #Half]

Half

Learning Goals

  • 다양한 데이터 유형으로 작업
  • type casting(형 변환) 연습
  • 수학 연산 사용
  • 입력 매개변수와 반환 값을 사용하여 함수 만들기

Background

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

Demo

Getting Started

  1. GitHub 계정을 사용하여 cs50.dev에 로그인하세요.
  2. 터미널 창 내부를 클릭하고 cd를 실행합니다.
  3. $ 프롬프트에서 mkdir half를 입력합니다.
  4. cd half를 실행합니다.
  5. 그런 다음 wget https://cdn.cs50.net/2022/fall/labs/1/half.c를 터미널에 복사하여 붙여넣어 이 실습의 배포 코드를 다운로드하세요.
  6. 세금과 팁을 추가한 후 정확히 청구서의 절반을 계산하고 해당 값을 반환하는 half 함수를 완료해야 합니다.

Implementation Details

함수에서는 입력 매개변수인 청구서, 세금, 팁을 사용하여 최종 금액을 계산해야 합니다. 그러나 이러한 값은 백분율이므로 계산에 사용할 수 있도록 보다 적절한 형식으로 변환하려면 몇 가지 작업을 수행해야 합니다.

팁을 계산하기 전에 청구서 금액에 세금을 추가해야 합니다. 마지막으로 청구 금액, 세금 및 팁을 포함하여 전체 금액의 정확히 절반을 반환합니다.

나의 풀이

// 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에 나와있는 답을 비교하여
리턴값(절반)이 풀이와 동일하면 함수를 알맞게 작성한 것이다.
정확한 코드풀이는 찾을 수 없는 것으로 보아 계산식보다는 올바른 답을 도출해내는 데에 의의를 둔 과제인 듯 하다.

0개의 댓글