まとめ:動的配列
CoddyのCジャーニー「論理と制御フロー」セクションの一部。レッスン 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: 3
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;
}論理と制御フローのすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ