平成23年秋期試験午後問題 問8
はんなさん
(No.1)
設問2のdですが
なぜ
priority < V[i]
ではなく
priority ≦ V[i]
なのでしょうか?
なぜ
priority < V[i]
ではなく
priority ≦ V[i]
なのでしょうか?
2022.05.26 19:10
nsさん
★FE シルバーマイスター
(No.2)
プログラム2は〔代入文の変換〕の(2)の処理、すなわち「最も優先して処理するべき演算子の位置を決定する処理」を行うプログラムです。
iの初期値は Getpos(S[], ">>") - 1、すなわち「代入文の一番後ろ」です。
ループ内にi <- i - 1があることから、代入文を後ろから一文字ずつチェックすることが分かります。
これらをもとに様々な代入文に対してプログラム2をトレースしてみて、"<"と"≦"の違いを考えてみてください。
ヒントは「代入文内に優先順位の等しい演算子が複数ある場合」です。
iの初期値は Getpos(S[], ">>") - 1、すなわち「代入文の一番後ろ」です。
ループ内にi <- i - 1があることから、代入文を後ろから一文字ずつチェックすることが分かります。
これらをもとに様々な代入文に対してプログラム2をトレースしてみて、"<"と"≦"の違いを考えてみてください。
ヒントは「代入文内に優先順位の等しい演算子が複数ある場合」です。
2022.05.26 22:13
はんなさん
(No.3)
ヒントありがとうございます。
考えてみましたが、やはり一度でもpriorityが12になれば12<12で負となっても、priorityは12のままとなり、わざわざ≦とする必要がないのではないかと考えます。
考えてみましたが、やはり一度でもpriorityが12になれば12<12で負となっても、priorityは12のままとなり、わざわざ≦とする必要がないのではないかと考えます。
2022.05.26 23:15
nsさん
★FE シルバーマイスター
(No.4)
配列Sが <<Ans=X1*10*X2>> の場合、
配列Vが 0,2,2,2,10,2,3,12,3,3,12,2,3,1 となります。
問題文に例として出ている代入文の"+"を"*"に変えました。(配列Vが少し見づらいですがご容赦ください)
このケースについて、"<"の場合と"≦"の場合で、最終的なnextの値はいくつになりましたか?
このプログラムの結果はnextの値です。priorityの値が変化するかどうかではなく、nextの値がいくつになるかが重要です。
配列Vが 0,2,2,2,10,2,3,12,3,3,12,2,3,1 となります。
問題文に例として出ている代入文の"+"を"*"に変えました。(配列Vが少し見づらいですがご容赦ください)
このケースについて、"<"の場合と"≦"の場合で、最終的なnextの値はいくつになりましたか?
このプログラムの結果はnextの値です。priorityの値が変化するかどうかではなく、nextの値がいくつになるかが重要です。
2022.05.27 00:50
boyonboyonさん
★FE シルバーマイスター
(No.5)
nsさんが述べられているように、同じ演算子が、連続して出てきたとき、演算する順番を変えたら答えが違う場合があります。<と≦の使い分けは、それを防止し正しい順で計算するためです。--//--//
2022.05.27 00:59
boyonboyonさん
★FE シルバーマイスター
(No.6)
No.5の
は限定しすぎでした。
具体的に、文字ではなく数値を入れた式で説明します。
例えば、10-5+2 で考えます。
設問2のdを < にするとnextが、+ の場所のままになり、5+2 が最初に抽出され、正しく計算されません。
≦ にすると、nextが、ー のところになり、10-5 が最初に抽出され、正しく計算されます。
設問2のcでは、これとは逆に nextを移動させたくないので、< にします。
>同じ演算子が、連続して出てきたとき
は限定しすぎでした。
具体的に、文字ではなく数値を入れた式で説明します。
例えば、10-5+2 で考えます。
設問2のdを < にするとnextが、+ の場所のままになり、5+2 が最初に抽出され、正しく計算されません。
≦ にすると、nextが、ー のところになり、10-5 が最初に抽出され、正しく計算されます。
設問2のcでは、これとは逆に nextを移動させたくないので、< にします。
2022.05.27 09:39
りなさん
(No.7)
この投稿は投稿者により削除されました。(2022.05.27 21:24)
2022.05.27 21:24
はんなさん
(No.8)
nsさん
ご丁寧に例までありがとうございます。
nextに注目しておりませんでした。
理解することができました、ありがとうございました。
ご丁寧に例までありがとうございます。
nextに注目しておりませんでした。
理解することができました、ありがとうございました。
2022.05.27 21:25
はんなさん
(No.9)
boyonboyonさん
補足のご説明ありがとうございます。
わかりやすくご説明いただき、理解できました。
ありがとうございました。
補足のご説明ありがとうございます。
わかりやすくご説明いただき、理解できました。
ありがとうございました。
2022.05.27 21:25
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告