![[CS50] 배열 - 배열(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNLJF3%2FbtsHWckuUCs%2FRToHQBrk3rkjNx9vSkjLRK%2Fimg.jpg)
전역 변수
이전 포스팅에 이어서 아래 코드에서는 scores 배열의 크기를 정해주는 N이라는 변수를 새로 선언했다.
만약 N이 고정된 값(상수)이라면 선언할 때 const를 앞에 붙여서 전역 변수로 지정할 수 있다.
상수는 코드 전반에 걸쳐 바뀌지 않는 값을 의미한다.
관례적으로 전역 변수는 대문자로 표기한다.
#include <cs50.h>
#include <stdio.h>
const int N = 3;
int main(void)
{
// 점수 배열 선언 및 값 저장
int scores[N];
scores[0] = 72;
scores[1] = 73;
scores[2] = 33;
// 평균 점수 출력
printf("Average: %i\n", (scores[0] + scores[1] + scores[2]) / N);
}
scores의 크기를 전역 변수로 선언했기 때문에, 점수 개수가 바뀌었을 때 수정해야 하는 코드가 조금 줄었다.
하지만 여전히 배열의 인덱스마다 점수를 지정해줘야 하는 불편함이 있다.
배열의 동적 선언 및 저장
아래 코드에서는 루프와 함수를 사용하여 더 동적인 프로그램을 작성할 수 있다.
#include <cs50.h>
#include <stdio.h>
float average(int length, int array[]);
int main(void)
{
// 사용자로부터 점수의 개수 입력
int n = get_int("Scores: ");
// 점수 배열 선언 및 사용자로부터 값 입력
int scores[n];
for (int i = 0; i < n; i++)
{
scores[i] = get_int("Score %i: ", i + 1);
}
// 평균 출력
printf("Average: %.1f\n", average(n, scores));
}
// 평균을 계산하는 함수
float average(int length, int array[])
{
int sum = 0;
for (int i = 0; i < length; i++)
{
sum += array[i];
}
return (float) sum / (float) length;
}
여기서는 배열의 크기를 사용자에게 직접 입력받고 배열의 크기만큼 루프를 돌면서 각 인덱스에 해당하는 값을 사용자에게 동적으로 입력받아 저장한다.
그리고 average라는 함수를 따로 선언하여 평균을 구한다.
average 함수는 length와 array[], 즉 배열의 길이와 배열을 입력으로 받는다.
함수 안에서는 배열의 길이만큼 루프를 돌면서 값의 합을 구하고 최종적으로 평균값을 반환한다.
이와 같은 방법을 통해서 임의의 점수 개수와 점수 배열에 대해 동적으로 평균값을 구하는 프로그램을 작성할 수 있다.
이 방법을 사용하면 점수의 개수가 변경될 때마다 코드 전체를 수정할 필요 없이 간단하게 배열의 크기와 내용을 동적으로 처리할 수 있어 효율적이다.
References
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'CSE > CS 기초' 카테고리의 다른 글
[CS50] 배열 - 문자열의 활용 (1) | 2024.06.13 |
---|---|
[CS50] 배열 - 문자열과 배열 (0) | 2024.06.13 |
[CS50] 배열 - 배열(1) (0) | 2024.06.13 |
[CS50] 배열 - 디버깅 (0) | 2024.06.13 |
[CS50] 배열 - 컴파일링 (1) | 2024.06.12 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!