まとめ:動的配列
CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 37/63。
チャレンジ
簡単ユーザー入力に基づいて動的配列を作成し、データを処理し、適切なメモリ管理を実証するCプログラムを作成してください。プログラムは以下の手順を行う必要があります:
- 格納する要素の数を表す整数
nをユーザーから読み取ります malloc()とsizeof()を使用して、n個の整数の配列用にメモリを動的に割り当てます- メモリ割り当てが成功したか確認します。失敗した場合は、
Memory allocation failed!と出力してプログラムを終了します - 割り当てに成功した場合は、
Array of size [n] created successfully!と出力します - ユーザーから
n個の整数値を読み取り、割り当てられた配列に格納します - すべての要素の合計を計算し、
Sum: [value]の形式で出力します - 最小値を見つけ、
Minimum: [value]の形式で出力します - 平均値より大きい要素の数をカウントし、
Elements above average: [count]の形式で出力します - 使用された合計メモリをバイト単位で
Memory used: [bytes] bytesの形式で出力します free()を使用してメモリを解放します- 適切なクリーンアップを確認するために
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;
}