基本情報過去問 平成31年春期 午後問8 設問2

にゅさん  
(No.1)
設問2:プログラム1(副プログラムHuffman)序盤行について質問です。
〇整数型node[]の下にある・SortNode(size,parent,freq,nsize,node)はどういう意味でしょうか?
副プログラムSortNodeは下にあるので、まずは副プログラムHuffmanの処理を全て終えてから下の副プログラムSortNodeに移るイメージですが違うのですか?

これは余談ですが、基本情報技術者過去問題 平成22年春期 午後問8についても同じ疑問があります。
プログラムsortでも*プログラムsortの終わり*の手前にMerge(slist1,num1,slist2,num2,list)といった1つのプログラムの行内に別プログラムMergeが書かれているのは何を意味しているのですか?

長文で申し訳ないのですが、よろしくお願いいたします。
2022.04.27 21:37
y4 kさん 
(No.2)
プログラミングの経験が余り無いとお見受けします。

それぞれの副プログラムを定義しているのです。
そして、Huffmanの中で、SortNodeを呼び出している記述です。

別にHuffman→SortNodeの順に実行する訳ではないですよ。

多くのプログラミング言語では、こうした副プログラム(関数と呼ぶことが多い)を複数用意して、機能を実現します。

そして、ある関数の中で、他の関数や自分自身を呼び出す事は普通にあります。

試験が終わった後でよいので、プログラミング言語のテキストなども軽く眺めてみれば、そういうものだと御理解して頂けると思います。


2022.04.27 22:29
chihiroさん 
FE・プラチナエキスパート
(No.3)
>〇整数型node[]の下にある・SortNode(size,parent,freq,nsize,node)はどういう意味でしょうか?
意味は2つあります。
1つ目は要素組の整列です。Huffman開始時点では要素組は節の値の昇順に整列されていないので、SortNode(の中のSort)で整列させる必要があります。
2つ目はnsizeの値の確定です。ループ処理前にSortNodeを実行してnsizeの値を確定させておかないとループ処理に入れなくなります(nsize≧2という判定があるため)。

>プログラムsortでも*プログラムsortの終わり*の手前にMerge(slist1,num1,slist2,num2,list)といった1つのプログラムの行内に別プログラムMergeが書かれているのは何を意味しているのですか?
これは単に分割したデータを併合するためです。どういう動きをするかは実際にトレースして確かめてください。
2022.04.27 22:36
y4 kさん 
(No.4)
この投稿は投稿者により削除されました。(2022.04.27 22:46)
2022.04.27 22:46
にゅさん  
(No.5)
別プログラムを途中で呼び出していたんですね!少し気持ちがラクになりました。トレース頑張ります!ありがとうございます!
2022.04.28 08:06

返信投稿用フォーム

スパム防止のためにスレッド作成から30日以上経過したスレッドへの書き込みは禁止しています。

その他のスレッド


Pagetop