アットウィキロゴ

情報処理入門1(2011)

問題、解答用紙一体のため、正確な問題は分からないが
提出したプログラムより問題を推測した。

問1

次のプログラムを起動し、各設問に答えよ。
プログラム

解説.
設問1 省略、論理積(and,かつ,&&)、論理和(or,または,||)を忘れないこと
設問2 しっかり計算するか、windowsの計算機に計算させる
設問3 iの値はラッキーナンバーの桁数である。
    nは、whileの繰り返し条件が n>0 だからループを抜けたときは
    n<=0 であることが分かる。n<0 にはなりえないから n=0 と分かる。
    x[i]は、ラッキーナンバーの10のi乗の位の数を表す。
    例えばx[2]は、10の2乗=100の位の数であり、x[0]は1の位である。
    cは各桁の数字の総和。もしナンバーが 12345 だったら c=1+2+3+4+5=15。
    もしわからなければ 123 のように簡単な数で考えること。


問2

頭と足の数を入力させ、そこから鶴亀算を計算するプログラムを設計せよ。
ただし、足の数は常に偶数であるなど、条件を考慮せよ。
条件を満たさないときは、繰り返し頭と足の数を入力させろ。

解説.
繰り返しの数は一定でないから、do-whileかwhileを使う。今回はdo-whileを使って考える。
鶴亀算ができる条件は、「足の数が偶数」の他に
「足の数が少なすぎてはいけない」と「足の数が多すぎてはいけない」、具体的に書くと
「足は頭の数の2倍以上(全て鶴の場合が最小)」と「足は頭の数の4倍以下(全て亀の場合が最大)」である。
これら3つの条件が、どれか1つでも成り立たないとき、繰り返しをさせる。
なので例えば、do-whileの繰り返し条件は、足をs、頭をhとすると
s%2!=0 || 4*h<s || s<2*h のようになる。
(足が偶数でない、または、足が頭の4倍より多いい、または足が頭の2倍より少ない、とき繰り返させる)
以上より、解答例としては次のプログラムが考えられる。
連立方程式は各自解け。
解答例


問3

ベクトルa,bの要素を入力させ、その内積を求めよ。
またベクトルの次元も入力させよ、ただし次元は高々10とする。

解説.
次元は10までなので配列としてa[9] のように実数型で宣言しておく。
(a[10]でもいいが、これだと0~10の計11個の次元に対応できる。)
あとは次元を入力させ、それだけforで繰り返し要素を入力させて
最後に同様な方法で、内積の要素の計算法で求めればよい。
解答例


問4

最大公約数を求めるプログラム(Euclidの互除法)を組んだ。
しかし席をはずしている間に誰かが行をいたずらに入れ替えてしまった。
元に戻し起動できる形にせよ。

解説.
Euclidの互除法は授業で扱うだろうから特になし。
解答例には、さらに最小公倍数を求められるようにしておいた。
コメント化してあるので行初めにある // を消せ。
解答例
最終更新:2012年02月17日 12:42