練習 [4] while 文(教科書では主に 4 章が対応)(4/5)

練習 4(提出プログラム名:p0404.c)

サンプルプログラム 4 (sample4.c)p0404.c という別の名前のファイルにコピーしなさい.そして,p0404.c を編集して以下の例のように実行できるプログラムを作りなさい.
このプログラムでは 1 つの整数 n を読み込み,次のルールに従って n 個だけ記号を出力し,最後に改行した後で「以上です」と出力して終了する.なお,n は 0 以上であると仮定してプログラムを作ってよい.
【出力ルール】
 ① 通常は半角のマイナス記号(-を出力するが,
  5 回に 1 回だけマイナス記号の代わりに半角のプラス記号(+を出力する.
  (つまり,5 個目,10 個目,15 個目,…. は – ではなく + を出力する)
 ② 上の記号出力とは別に,記号を 10 個出力するたびに改行も行う.
 ③ n 個の記号を出力し終わったら,いったん改行し,改めて最後に「以上です」と出力する.

【注意点】
この問題では if 文は 2 回までしか使ってはいけません

【ヒント】
この問題では while 文を使って以下の処理を n 回繰り返すという構造になります.
つまり,繰り返しの対象となるのは(使用する変数を k として)

  if ( k は 5 の倍数? )
  {
    ①プラス記号を出力(改行は出力しない);
  }
  else
  {
    ①マイナス記号を出力(改行は出力しない);
  }

  if ( k は 10 の倍数? )
  {
    ②改行のみを出力;
  }
  k++;

となります.(k++; を忘れると無限ループ!)
この問題の場合,①と②を分けて考えると簡単になります.
なお,while 文での繰り返しが終わった後に,ひとまず改行して,その後に「以上です」と出力することも忘れないこと.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※「以上です」の後の改行(\n)を忘れないこと!
整数を 1 つ入力してください:6
----+-
以上です
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
    ※記号の個数(例えば 1 行目は「- を 4 個,+ を 1 個,- を 4 個,+ を 1 個,改行」の順となっていること)をきちんと確認せよ.
整数を 1 つ入力してください:27
----+----+
----+----+
----+--
以上です
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:0

以上です

【過去にあったミス(減点となり,やり直しを命じられる)】
■ 上の3種類の実行例と出力が違っている(きちんと確認していない).
  (例1)– の個数が違っている.
      よくあるミスとして,実行例 1 で ----+- となるべきところが -----+- となっている.
      (+ の左に - が 1 個多い
  (例2)上のヒントを見落としていて,必要以上に複雑なプログラムになっている.
      例えば,10 で割り切れる時だけわざわざ "+\n" と出力させるようにしている.
      ルールの①と②は別々に処理する方が話はずっと簡単である.
  (例3)「以上です」という出力がその前の記号につながってしまっている.
      例えば, ----+-以上です になってしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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