課題

今日の課題は, switch文を使うものはない. (無理矢理使ってもいいけれど…) むしろ, for文関連です.

基礎プロくんでやってみてもらいたい. 最初のは今回の教材ページの例題の応用. あとのふたつは ちょっと考える必要のある問題. テストではないので, いつもどおり質問や相談もOKです. 注意:今回も入力値がある問題は,問題の解答を出力する前に「入力値」を出力するようにしてください.

  1. 3 か 7 で割れる数の個数
    整数 n を入力する (n は1以上), 1以上, n以下の整数のうち, 3 か 7 で割れる数の個数を もとめよ. 入力例:
    20
    対応する出力 (3か7で割れるのは 3,6,7,9,12,14,15,18 だから):
    20 8
  2. データの最小値
    いくつかの整数データを読み込み, そのなかで最小の値を出力するプログラムを作る. 入力は最初の行にデータの個数 n (n は1以上), その次から一行にひとつずつ, n個のデータが与えられる. (データはすべて0以上, 100000000未満とする.) 出力はこのn個のデータのうち, 最小のものを出力する.
    ヒント: 最小値を求めるには, 前に述べた「回数を求める」と 似た方法を使う. まず, 「暫定最小値」を憶えておく変数をひとつ用意し, 次々のデータをその変数と比較して, 新記録があったら その変数の値を更新すればよい. さて, あとはその「暫定最小値」の変数の初期値をどうするか, だ…
    ところで, このプログラムは, いままでのものと違って, 入力データの個数が決まっていない. 最初のデータを読んだところで入力データの個数がわかるから, そのあとその個数だけのデータを順次読み込むことになる. つまり, 「繰り返しの内側で入力する」必要があるわけだ.

    入力例(データは3個で, 2と0と9):

    3 2 0 9
    対応する出力:
    3 2 0 9 0
  3. ピタゴラス
    整数 z を入力する (z は 1以上). z を斜辺とし, 残りの二辺を x, y とする直角三角形で, x, y が整数のものをすべて列挙したい. つまり, (x*x + y*y) が z*z に等しくなる正の整数 x, y の組をすべてもとめる. 出力は一行に一組ずつ, x と y を空白一文字をはさんで出力する. 出力の順は, x の小さいほうから昇順にならべる. (今回は, 平方根などは使わずに解く.) 入力例:
    5
    対応する出力:
    5 3 4 4 3
    例によって, 基礎プロくんは空白の個数とかにこまかいので, 注意してください.

[page 5] prev index next