Menu
Coddy logo textTech

주요 배열 연산

Coddy C++ 여정의 기초 섹션에 포함된 레슨. 74개 중 66번째.

다음은 몇 가지 일반적인 배열 연산입니다:

  • 배열의 모든 요소의 합계를 구합니다:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • 배열의 요소의 average를 구합니다:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • 배열에서 최댓값 요소 찾기:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • 배열에서 최솟값 요소 찾기:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

챌린지

쉬움

calculateStats라는 이름의 함수를 작성하세요. 이 함수는 double로 이루어진 array와 array의 size를 입력으로 받아 다음 작업을 수행합니다:

  1. array의 모든 element의 sum을 계산합니다.
  2. array element의 average를 계산합니다.
  3. array에서 최댓값 element를 찾습니다.
  4. array에서 최솟값 element를 찾습니다.

함수는 sum, average, 최댓값, 최솟값을 해당 순서대로 포함하는 double array를 return해야 합니다.


중요 참고 사항:
  • size 매개변수를 사용하여 loop를 제어하세요. std::size()는 사용하지 마세요.
  • maxmin을 초기화하려면 arr[0]에서 시작하세요. 이렇게 하면 array에 음수만 포함된 경우에도 올바르게 작동합니다.
  • main()에 미리 작성된 코드는 이미 new를 사용하여 동적 array를 할당하고 delete[]를 사용하여 해제합니다. 여러분은 함수 내부에서 new double[4]를 사용하여 결과 array만 할당하고 return하면 됩니다. 참고: 포인터와 new를 사용한 동적 메모리는 이후 섹션에서 자세히 소개합니다. 여기서는 제시된 new double[4] 패턴을 따르기만 하면 됩니다.

권장 접근 방식:
  1. sum = 0, max = arr[0], min = arr[0]을 초기화합니다.
  2. i = 0부터 i < size까지 loop를 실행하면서 sum을 누적하고 필요에 따라 max/min을 업데이트합니다.
  3. average를 sum / size로 계산합니다.
  4. new double[4]를 사용하여 새 array를 할당하고, 네 가지 결과를 순서대로 저장한 다음 return합니다.

직접 해보기

#include <iostream>

double* calculateStats(double arr[], int size) {
    // newArr에 저장하기 전에 4개의 값을 계산해야 합니다
    // sum(0에서 시작), max, min(둘 다 arr[0]에서 시작) 변수를 초기화하세요
    // for 루프를 사용하여 배열을 순회하세요
    // 루프 내부:
    //   - 각 요소를 sum에 더하세요
    //   - 각 요소를 max와 비교하고 더 크면 업데이트하세요
    //   - 각 요소를 min과 비교하고 더 작으면 업데이트하세요
    // average = sum / size를 계산하세요 (루프 이후)
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러