• 締切
  • 困ってます

配列のサイズを決めないプログラム

  • 質問No.9642935
  • 閲覧数117
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 51% (406/792)

プログラムの作成時に配列のサイズを決めないでプログラムの実行時に決めるという場合があると思います。
1.可変サイズとして配列の宣言
2.プログラム開始後、何らかの情報でサイズを決定する
3.確保された配列にデータを読み込ませたりして使用する

ここで質問ですが、データを読み込ませて配列のサイズが決まる場合、上記の方法では不成立のように思います。2と3が逆だからです。処理するデータに応じて配列のサイズを変更する方法を教えて頂きたいのですが。そのような処理が可能になるとプログラムがデータの量と無関係(もちろん限度あり)となり汎用化されると思うのですが。どのようにするのでしょうか。基本はfortran95ですが、Cでの処理でも参考になるかと思います。

回答 (全3件)

  • 回答No.3

ベストアンサー率 58% (965/1642)

[技術者向] コンピューター カテゴリマスター
2の「何らかの情報」を「データをバイトなど、構造の最小単位で次々と読み込んで、サイズ解析を予め行う」
という方法を採っている事もあります。
ランダムアクセスが可能ならシークポイントを変更し、シーケンシャルなら必要箇所以外を読み飛ばす事でできます。
処理速度よりも、リスト構造の構造情報自体も塵も積もればで馬鹿にならない時に採られる方法です。
読み込み処理ルーチンの引数に、解析動作なのか本体読み込み動作なのかを示すフラグを設ければ、最小の手間で動作を変えられます。
  • 回答No.1

ベストアンサー率 28% (1379/4880)

「2.」で完全にサイズを決定するんでなくて

2. 読み込むデータがあるなら配列のサイズを増やす。読み込むデータがないのなら終了。
3. 増やしたサイズ分読み込む
4. 「2.」に戻る

とすればよろしいかと。
お礼コメント
skmsk1941093

お礼率 51% (406/792)

回答ありがとうございます。以下のような感じでしょうか。
1.仮に読んで見る。
2.読み込めるからデータがある。
3.だったら配列を増やす。
4.1で仮に読み込んだデータがあるのでそれを増やした配列の最後に入れる
私は読み込むループの内部で配列のサイズを変更できると思っていなかったのですが、できそうですね。ありがとうございます。
投稿日時:2019/08/06 16:22
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

ピックアップ

ページ先頭へ