課題 [4] while 文(7/9)

問 7(提出プログラム名:ex0407.c)

1 つの整数 n を読み込み,次のルールで記号を n 個出力するプログラムを作成しなさい.
ただし,プログラムでは必ず while 文を使うことdo – while 文ではない).
あわせて,if 文は 2 個まで(2個以下)しか使ってはいけません.
n は 2 以上の整数であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0407.c としなさい.

【ルール】
● 出力する記号は #- のいずれかとする(どちらも半角).
● k 番目に出力する記号は, k が 3 の倍数ならば - とし,さもなくば # とする.
● 出力する記号に関係なく,記号を 10 個出力するたびに改行を出力する.
● n 個の記号を出力し終わったら(while の繰り返しの後に),改行だけを出力する
● 最後に「以上です」と出力する(末尾の改行も忘れないこと).

【ヒント】
ここでは,k = 1 ~ n の範囲で while 文による繰り返しを行うことになります.
その繰り返しの中では毎回必ず – か # のどちらか 1 つを出力することになるので,3 の倍数かどうかをチェックする if-else 文を使って – か # のいずれかを出力します(ただし改行は出力しません).
そして,上の if 文とは別に,改行を出力すべきかどうか(10 の倍数かどうか)だけを判定する if 文も書きます.
つまり,上のように 2 個の if 文を別々に続けて書けばそれだけで十分です.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    次の点に注意せよ:「以上です」の前に改行は入っているか? 後にも改行を忘れていないか?
n を入力してください:12
##-##-##-#
#-
以上です
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
n を入力してください:30
##-##-##-#
#-##-##-##
-##-##-##-

以上です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)# と – が逆に表示されている.
  (例2)# と – の出力が上の実行例と微妙に違っている.
  (例3)実行例2ではちょうど 10 の倍数で終わっているので,改行が連続して出力されているがこのようになっていない.
■ 上のヒントを見落としていて「3 の倍数であって 10 の倍数でもある時はどうしよう」などと難しく考えすぎてしまい,複雑な条件式の if 文をたくさん書いてしまって混乱(自滅)している.
■ while で繰り返しを始める前に k = 1; という初期化をやる必要があるがこれを忘れている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 問 8 (ex0408.c) ]