Menu
Coddy logo textTech

まとめ:動的配列

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 37/63。

challenge icon

チャレンジ

簡単

ユーザー入力に基づいて動的配列を作成し、データを処理し、適切なメモリ管理を実証するCプログラムを作成してください。プログラムは以下の手順を行う必要があります:

  1. 格納する要素の数を表す整数 n をユーザーから読み取ります
  2. malloc()sizeof() を使用して、n 個の整数の配列用にメモリを動的に割り当てます
  3. メモリ割り当てが成功したか確認します。失敗した場合は、Memory allocation failed! と出力してプログラムを終了します
  4. 割り当てに成功した場合は、Array of size [n] created successfully! と出力します
  5. ユーザーから n 個の整数値を読み取り、割り当てられた配列に格納します
  6. すべての要素の合計を計算し、Sum: [value] の形式で出力します
  7. 最小値を見つけ、Minimum: [value] の形式で出力します
  8. 平均値より大きい要素の数をカウントし、Elements above average: [count] の形式で出力します
  9. 使用された合計メモリをバイト単位で Memory used: [bytes] bytes の形式で出力します
  10. free() を使用してメモリを解放します
  11. 適切なクリーンアップを確認するために Memory successfully freed! と出力します

malloc()free() を使用するために <stdlib.h> ヘッダーをインクルードすることを忘れないでください。このチャレンジは、割り当てから使用、そして適切なクリーンアップに至るまで、動的メモリ管理の完全な理解をテストします。

例えば、入力が以下の場合:

5
12 8 15 3 20

出力は以下のようになります:

Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!

この包括的なチャレンジは、割り当てられた配列に対して意味のあるデータ処理操作を実行しながら、動的メモリ管理の完全なライフサイクルを実証します。

自分で試してみよう

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 要素数を読み込む
    int n;
    scanf("%d", &n);
    
    // TODO: 以下にコードを記述してください
    // 1. malloc() を使用して n 個の整数用のメモリを割り当てる
    // 2. メモリ割り当てが成功したか確認する
    // 3. 配列に n 個の整数を読み込む
    // 4. 合計を計算し、最小値を見つけ、平均以上の要素をカウントする
    // 5. 結果を出力し、メモリを解放する
    
    return 0;
}

Logic & Flowのすべてのレッスン