プログラミング演習

僕の通う学科では、1,2年時にプログラミングの演習の授業があります。
授業は昼開講と夜開講の2種類用意されていて、好きな方を選べるのですが、夜の方を友達が再履しているので、そのお手伝いをすることになりました。12

授業で使っているのはC言語で、前半は文法を解説する講義、後半は先生が作った問題をそれぞれが解いていき、終わったら提出、終わらなかったら次回提出というような形になっています。

では、問題を見てみましょう。

問1. 任意の正の整数nを入力し(入力は繰り返す),
偶数であれば n/2 を計算し
奇数であれば n*3+1 を計算する
その演算結果をまた偶数、奇数の判定し、同じ計算を繰り返すると必ず1になる.
例えば 3→10→5→16→8→4→2→1
この処理で5桁の整数(n)で1になるまでの処理回数が最も多いnを求め、1になるまでの経過とともに出力しなさい。

問2. 
問1で求めた、1になるまでの処理回数が最も多いnを求め、1になるまでの経過の値の、奇数の総和と平均、偶数の総和と平均を出力しなさい。

問3. 
問1で求めた、1になるまでの処理回数が最も多いnを求め、1になるまでの経過の値の、最大値、総和、平均を出力しなさい。

問4. 
問1で求めた、1になるまでの処理回数が最も多いnを求め、"1になるまでの経過の値"を、大きい順に並べて表示しなさい。

フローチャートとプログラム、結果を提出

今回出されている問題がこれ。3

先週は配列を習い、次はポインタへと進む予定だったのですが、みんながあまりにも関数を理解できてないので、先に関数の復習をすることになったそうです。
つまり、関数を使って手順を構造化しなければならないということですね。4

さて、この問題、みなさんならどう解きますか?

  1. つまり課題を代わりにやって説明する、と。^^;
  2. 僕も本人に理解して貰いたいと思ってやっていますので誤解無きように。
  3. 多少日本語がおかしいのは、この授業では毎度のことです。
  4. 自分が履修した時の経験からするとたぶん、計算処理と表示処理を関数で分けることを求められそうです。

コメントを残す