セクション 4. 章 3
single
配列の動的割り当て
メニューを表示するにはスワイプしてください
動的割り当てがなぜ必要なのかを探る前に、静的配列と動的配列の特徴を簡単に振り返ります。
静的配列
- 固定サイズ: 宣言時に配列のサイズが決まり、実行時に変更できません。
- コンパイル時のメモリ割り当て: 静的配列に必要なメモリはコンパイル時に割り当てられます。
動的配列
- リサイズ可能: 動的配列は実行時にサイズ変更が可能であり、プログラムの要件の変化に柔軟に対応できる;
- 実行時のメモリ割り当て: 動的配列のメモリはプログラムの実行中に割り当てられる。
静的アプローチの制限
現在の月で経過した各日に対してパフォーマンススコアの入力をユーザーに促すプログラムを考える。
残念ながら、これを静的配列で実現することはできない:
main.cpp
12345678910#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
注意
これはコンパイルエラーになります。なぜなら、day_passed は定数式ではなく、月の日付の実行時の値に依存するためです。
そのため、静的配列の代わりに動的に確保された配列を使用する必要があります。
タスク
スワイプしてコーディングを開始
気象学者として、一日の気温データを分析する場面を想像してください。
ここでは、ポインタや関数を使って動的に確保された配列データを操作します。
- 変数
sumを0に、minTempとmaxTempを配列の最初の要素に初期化。 - インデックス
tempsを0からforまで使い、iループで配列hoursを走査。 - 各要素
temps[i]の値をsumに加算。 temps[i]がminTempより小さい場合、temps[i]にminTempを代入。temps[i]がmaxTempより大きい場合、temps[i]にmaxTempを代入。sumをhoursで割り、平均気温を計算して変数averageに格納。minTemp、maxTemp、averageの値をコンソールに出力。
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 3
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください