[This is CS50 2024] After Week2 - 배열 #Hours

moonstrnck·2024년 1월 24일

CS50

목록 보기
4/13


[CS50 Practice - #Hours]

Hours

Learning Goals

  • 배열 사용 연습
  • 배열을 함수의 매개변수로 사용하기
  • 루프에 값 추가
  • 정수 나누기와 형 변환

Background

당신이 CS50을 수강하고(이 글을 읽고 있다면 아마 그럴 것입니다!) 매주 각 문제 세트에 시간을 보낸다고 가정해 보세요. 컴퓨터 과학을 배우는 데 평균적으로 또는 총 몇 시간을 소비했는지 궁금하실 것입니다! 이 프로그램에서는 사용자의 입력을 기반으로 총 시간 또는 지정된 일수에 대한 평균 시간을 계산하는 함수를 완성합니다.

Hints

  • 배열의 숫자를 더하려면 먼저 변수를 0으로 초기화해야 할 수 있습니다. 그런 다음 배열의 각 값을 해당 변수에 추가하는 루프를 사용하고 싶을 것입니다.
  • 평균을 계산할 때 두 개의 정수를 나누면 어떻게 되는지 주의하세요!

Demo

Getting Started

  1. GitHub 계정을 사용하여 cs50.dev에 로그인합니다.
  2. 터미널 창 내부를 클릭하고 cd를 실행합니다.
  3. $ 프롬프트에서 mkdir hours 를 입력합니다.
  4. 이제 cd hours을 실행하세요.
  5. 그런 다음 wget https://cdn.cs50.net/2022/fall/labs/2/hours.c 를 터미널에 복사하여 붙여넣어 이 실습의 배포 코드를 다운로드하세요.

Implementation Details

기본 기능은 사용자가 CS50을 복용한 주 수를 묻는 메시지를 표시한 다음 해당 요소 수로 배열을 만듭니다. 일부 데이터를 검색한 후 프로그램은 사용자에게 "T" 또는 "A"를 입력하라는 메시지를 표시합니다. "T"는 사용자가 입력한 총 시간을 인쇄해야 하지만 아직은 그렇지 않습니다. 반면 "A"는 사용자가 입력한 평균 시간을 프린트해야 합니다 (아직은 아닙니다!). do while 루프는 변수 출력에 저장되기 전에 입력 문자를 대문자로 표시하기 위해 toupper를 사용합니다. 그런 다음 printf 함수는 calc_hours를 호출합니다. 배열을 함수에 전달할 때 관련된 구문을 참고하세요.

calc_hours를 완료하려면 먼저 배열에 저장된 시간을 새 변수에 합산하세요. 그런 다음 출력 값에 따라 이 합계 또는 평균 시간을 반환합니다.

생각해보기

시간을 계산하는 함수를 사용하면 어떤 이점이 있나요?

나의 풀이

#include <cs50.h>
#include <ctype.h>
#include <stdio.h>

float calc_hours(int hours[], int weeks, char output);

int main(void)
{
    int weeks = get_int("Number of weeks taking CS50: ");
    int hours[weeks];

    for (int i = 0; i < weeks; i++)
    {
        hours[i] = get_int("Week %i HW Hours: ", i);
    }

    char output;
    do
    {
        output = toupper(get_char("Enter T for total hours, A for average hours per week: "));
    }
    while (output != 'T' && output != 'A');

    printf("%.1f hours\n", calc_hours(hours, weeks, output));
}

// TODO: complete the calc_hours function
float calc_hours(int hours[], int weeks, char output)
{
    float total = 0;
    for (int i = 0; i < weeks; i++)
    {
        total += hours[i];
    }

    if (output == 'T')
    {
        return total;
    }
    else
    {
        return total / weeks;
    }
}

0개의 댓글