• ベストアンサー

基本情報技術者試験の配列に関する問題

過去問でさっぱりわからない問題があります http://mt-net.vis.ne.jp/ADFE_mail/0283.htm X と同じ値が配列の 1番目と N番目の 2か所にある場合、k には 1 が設定されている。 という答えから逆に考えて、X と同じ値が2ヶ所あるってどういうことですか?もうぜんぜん何をやっているのか、何がしたいのかURLの解説読んでも分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yuki4499
  • ベストアンサー率62% (10/16)
回答No.3

k  配列のインデックス N  配列AのN番目の要素(配列の最大値) X  比較する値 A(k) 配列Aのk番目の要素 >k:N >A(k):X >は何を意味するのですか? k:NもA(k):Xも数値の比較をしています。 整数が格納されている配列の最大値がNなので Nを超えるkは存在しない なのでk:Nで比較してk>Nとなる場合終了条件へ Aの配列のk番目とXを比べて A(k)=Xとなる場合終了条件へ C言語でもなんでもいいので、配列の概念を理解してないときつい問題かもしれないですね

その他の回答 (3)

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.4

こんにちは > k,N,X,A(k) のそれぞれの意味、役割がよく分かりません。  基本的に問題を判る(上記記号の意味が判ること)まで良く読んでいただくことが大事です。  Nは問題の中に「配列の1番目からN番目に整数が..」となっているので配列の最終要素番号を格納している定数ですね。  Xは問題の中に「Xと同じ値が何番目の..」とありますから配列と比較しなくてはいけない定数ですね。  kはフローの中で初期に1を代入し、繰返すときにカウントアップ(+1)していますのでループ・カウンターでしょう。  A(k)は、配列Aのk番目の要素以外の解釈はありませんよね。 > k:N A(k):X は何を意味するのですか?  フローを見ると菱形の条件判断の線が出ているところに比較記号が付いていると思います。比較する対象は:で区切られた左右の項です。 例 k<N A(k)=X

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

最初にXと同じ値が見つかった時点でプログラムが終了するから、Xと同じ値が複数あったとしても(極端な例では配列の中の値が全部Xであったとしても)Kは最初にXと同じ値が入っていた1に設定される。 >という答えから逆に考えて 数学の証明問題ではないので、出題文を逆に考えても意味がありません。 見るべきはフローチャートのロジックです。 このロジックではこんな結果になると言っているに過ぎません。 ア X と同じ値が配列中にない場合、k には 1 が設定されている。 そんなわけは無い、kはN+1になっている。 イ X と同じ値が配列中にない場合、k には N が設定されている。 そんなわけは無い、kはN+1になっている。 ウ X と同じ値が配列の 1番目と N番目の 2か所にある場合、k には 1 が設定されている。 1番目の値をチェックした時点で処理が終わるから、この条件の時にはそうなる。 エ X と同じ値が配列の 1番目と N番目の 2か所にある場合、k には N が設定されている。 そんなわけは無い。1番目を見つけた時点で処理が終了するからkには1が設定されている。

fitsfits
質問者

補足

k,N,X,A(k) のそれぞれの意味、役割がよく分かりません。 k:N A(k):X は何を意味するのですか?

回答No.1

A(1) = 3 A(2) = 7 A(3) = 4 X = 4 のときは K = 3になります。 ========================= A(1) = 3 A(2) = 7 A(3) = 4 X = 5 のときは K = 4になります。 ======================== A(1) = 3 A(2) = 7 A(3) = 3 X = 3 のときは(最初A(1)と最後A(3)の両方にXと同じ値3がある) K = 1になります、ってことです。

関連するQ&A