課題 [6] 配列(5/9)

問 5(提出プログラム名:ex0605.c)

以下の手順に従って,入力された n 個の整数が昇順に並んでいるかどうかを判定するプログラムを作りなさい.提出するソースファイル(ソースプログラム)のファイル名は ex0605.c としなさい.

なお,ここでは長さ SIZE の int 配列を用意し,マクロ SIZE の値は 8 と定義しなさい.
プログラム中ではマクロ定義を除いて 8 や 7 を直接書き込んではいけません

【プログラムとして実現すべき手順】
以下の手順通りに書かれていない場合は,たとえ正しく動作しても不正解とみなすので注意せよ.
ここでは配列の名前を a とし,その内容が昇順に並んでいるかどうかを変数 flag1 かどうかで表すことにする.

① 整数 n を読み込む.
 (ここでは n は 1 以上 SIZE 以下であると仮定してプログラムを作ってよいことにする.)

② 続いて,整数を n 個読み込み,それらを配列 a へ格納する.

③ 初期値として変数 flag1 を代入しておく.

for ( i = 1; i < n; i++ ){ ... } として⑤の処理を繰り返す:
  ⑤ もし a[i-1] > a[i] ならば(昇順に並んでいないことが確定するので)
   flag = 0 とし,break を実行して for 文の繰り返しから脱出する.

⑥ 上の for 文が終わった時点で flag の値が 1 かどうかでもって昇順かどうかを出力する.
 ( 1 に等しければ「昇順」であり,さもなくば昇順ではない)

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:3
3 個の整数を入力してください:
5 8 2
うまく並んでいません
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:8
8 個の整数を入力してください:
1 1 2 2 3 3 4 4
昇順に並んでいます
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:1
1 個の整数を入力してください:
5
昇順に並んでいます

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)出力するメッセージが違っている(逆になっていたり,誤変換があったりする).
  (例2)「 個の整数を入力してください」の「」が入力した n の値になっていない.
■ 手順として指示されている内容に従っていない
■ flag の値が 1 かどうかの判定を if ( flag == 1 ) ではなく if ( flag = 1 ) と書いてしまっている
 (flag = 1 だと 1 を代入するだけになってしまう).
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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