Menu
Coddy logo textTech

配列の一般的な操作

CoddyのC++ジャーニー「基礎」セクションの一部 — レッスン 66/74。

よく使われる配列操作は以下の通りです:

  • 配列内のすべての要素の合計を求めます:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • 配列内の要素の平均を求める:
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型の配列とその配列のサイズを引数として受け取り、以下の操作を実行します。

  1. 配列内のすべての要素の合計を計算します。
  2. 配列内の要素の平均を計算します。
  3. 配列内の最大要素を見つけます。
  4. 配列内の最小要素を見つけます。

関数は、合計、平均、最大値、最小値の順に格納されたdouble型の配列を返す必要があります。


重要な注意事項:
  • ループの制御には size パラメータを使用してください。std::size() は使用しないでください
  • maxmin を初期化するには、それらを arr[0] から開始してください。これにより、配列に負の数しか含まれていない場合でも正しく動作します。
  • main() 内の事前に記述されたコードは、すでに new を使用して動的配列を割り当て、delete[] で解放しています。あなたは関数内で new double[4] を使用して結果配列を割り当て、それを返すだけで済みます。

推奨されるアプローチ:
  1. sum = 0max = arr[0]min = arr[0] を初期化します。
  2. i = 0 から i < size までループし、合計を累積し、必要に応じて最大値/最小値を更新します。
  3. 平均を sum / size として計算します。
  4. new double[4] で新しい配列を割り当て、4つの結果を順番に格納して返します。

チートシート

C++における一般的な配列操作:

全要素の合計:

int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}

要素の平均:

int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);

最大要素:

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];
    }
}

最小要素:

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];
    }
}

自分で試してみよう

#include <iostream>

double* calculateStats(double arr[], int size) {
    // newArrに格納する前に、4つの値を計算する必要があります
    // 合計(0から開始)、最大値、最小値(ともにarr[0]から開始)の変数を初期化します
    // forループを使用して配列を反復処理します
    // ループ内:
    //   - 各要素を合計に加算します
    //   - 各要素を最大値と比較し、より大きければ更新します
    //   - 各要素を最小値と比較し、より小さければ更新します
    // 平均 = 合計 / サイズ を計算します(ループの後)
    

    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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン