サンプル問題令和 [科目B]問5について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
ぬぬみんさん  
(No.1)
はじめまして。ぬぬみんと申します。

https://www.fe-siken.com/kakomon/sample/b5.html
色々な所の解説を見たのですがこちらの問題でわからない所があるので質問させてください。

答えはオなのですが、オの関数に例えばxに2,yに3を入れた時、
2の2乗+3の2乗=13
13÷0.5=6.5
という風になって私が想定している答えと合致しません。
(想定している答えは5)

何か初歩的な所ミスしているように思えてならないのですが、どこをミスしているのか自分で考えてみてもわからない状態です。どなたか教えていただけますと幸いです。
2023.03.05 09:47
y4 kさん 
(No.2)
この投稿は投稿者により削除されました。(2023.03.05 11:41)
2023.03.05 11:41
y4 kさん 
(No.3)
>13÷0.5=6.5
ここが間違いです。0.5で割るのではありません。
(2を掛けることになり、値は26ですよ)

0.5乗=1/2乗、平方根を求めるのです。
つまり、設問では2乗して13になる数を求めようとしています。
ですから、値を求めるなら約3.61になり、想定されている値とも異なります。
2023.03.05 11:42
まきさん 
(No.4)
三平方の定理で考えれば、2の2乗+3の2乗=√13
ですよね。ではこの√13って書いてないけどルートの前に小さい2が入ります。2乗して13にしたいのですから、だから1/2乗になるわけです。
指数関数の定義を見るとわかりますよ
2023.03.05 12:48
boyonboyonさん 
FE ブロンズマイスター
(No.5)
>想定している答えは5
x=3,y=4 → z=5 を考えていたのではありませんか。
2023.03.05 17:35
boyonboyonさん 
FE ブロンズマイスター
(No.6)
>まきさん
過去スレで、質問をされた方でしょうか、こちらからの流れで今日スレを見ましたら気がつきました。もしまだ疑問があるようでしたら、あらためて質問してください。
2023.03.05 18:13
まきさん 
(No.7)
この投稿は投稿者により削除されました。(2023.03.06 18:29)
2023.03.06 18:29
まきさん 
(No.8)
〉boyonboyonさん
問9の問題でなぜあのタイミングで4が出力されるかわかりません
2023.03.06 18:30
ぬぬみんさん  
(No.9)
ご回答いただいた皆様ありがとうございます。

y4 kさん

>>13÷0.5=6.5
>ここが間違いです。0.5で割るのではありません。
>(2を掛けることになり、値は26ですよ)

失礼しました。私の頭の中の考えと書き込んだ式が乖離してました。
13の0.5乗=13の2分の1
という風に考えていました。それで出たのが6.5です。

boyonboyonさん
>>想定している答えは5
>x=3,y=4 → z=5 を考えていたのではありませんか。

√x2乗+y2乗
上記の式にx=2,y=3を入れて、√2の2乗=2  √3の2乗=3 2+3=5
という風に考えていました。

y4 kさんの仰る「設問では2乗して13になる数を求めようとしています。」
でそもそも想定する答え自体が間違えてた事に気がつけました。
「√の中で足し算をするので想定する答えは√13になる」という認識が正しいという風に理解しました。
2023.03.06 20:26
boyonboyonさん 
FE ブロンズマイスター
(No.10)
スレ主さんすみません。こちらのスレを少し使わせていただきます。

>まきさん
こちらのスレをお借りして、回答致します。

order関数の定義・・どこか分かるようにorderの定義の行頭に記号を付けました。

order(整数型:n)
if(tree[n]の要素数が2と等しい)
①  order(tree[n][1])
②  nを出力
③  orrder(tree[n][2])
elseif(tree[n]の要素数が1と等しい)
□  order(tree[n][1])
□  nを出力
else
△  nを出力
endif

ご質問の部分ですが、ていねいに書くと

order(tree[2][1]=4)→order(4)です
  if(tree[4]の要素数が2と等しい)
    これは、tree[4]={8,9} 要素数2  なので真になります。
    よって、関数の①②③の部分が実行されます
      ①order(tree[4][1]=8)→order(8)です
          if(tree[8]の要素数が2と等しい)
          これは、tree[8]={} 要素数0  なので偽となり次の
          elseif(tree[8]の要素数が1と等しい)
          これも偽となり
          else
          △の部分を実行、8を出力します。
          endif  order(8)が終わります。
      ①終了
*    ②の処理で、4を出力します。
      続けて③の処理になります。
      ③が終わるとendifになり、
order(4)終了です。

いかがでしょうか。
2023.03.06 22:09
まきさん 
(No.11)
>boyonboyonさん
order(tree[2][1]=4)→order(4)です
  if(tree[4]の要素数が2と等しい)
    これは、tree[4]={8,9} 要素数2  なので真になります。
    よって、関数の①②③の部分が実行されます
      ①order(tree[4][1]=8)→order(8)です
          if(tree[8]の要素数が2と等しい)
          これは、tree[8]={} 要素数0  なので偽となり次の
          elseif(tree[8]の要素数が1と等しい)
          これも偽となり
          else
          △の部分を実行、8を出力します。
          endif  order(8)が終わります。
      ①終了
       ここでorder(8)は分かりました.
      次に②nを出力とありますが、8が終わり4になること。
      order(n)=order(4)になるということでしょうか?
2023.03.11 17:41
boyonboyonさん 
FE ブロンズマイスター
(No.12)
order(8)は、order(4)の処理の中で呼び出されています。
order(4)
  order(8)
  4を出力
  order(9)
order(4)の終了
です。
全体をorderでまとめて書くと
order(1)
  order(2)
    order(4)
      order(8)  8を出力してorder(8)終了
      4を出力
      order(9)  9を出力してorder(9)終了
    order(4)終了
    2を出力・・・order(2)の途中です。②
    order(5)
      order(10)  10を出力してorder(10)終了
      5を出力
      order(11)  11を出力してorder(11)終了
    order(5)終了
  order(2)終了
  1を出力・・・order(1)の処理の途中です。②
  order(3)
    省略
  order(3)終了
order(1)終了
になります。
2023.03.11 18:52
まきさん 
(No.13)
配列 tree[8] は要素を持たないので8を出力して終了し、呼出し元の order(4) の処理に戻るというのですね

つぎに③  orrder(tree[n][2])なので9が出力されるということですね。わかりました
2023.03.11 19:40

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop