問 6(提出プログラム名:ex0806a.h)
※ex0806a.c ではなく ex0806a.h を提出なので注意!
※講義資料(その2)で説明している内容です
このプログラム(ex0806a.c)とヘッダ(ex0806a.h)をそれぞれダウンロードし,
ヘッダの中の関数 get_sum_prime を完成させなさい.
(書き換えるのは ex0806a.h のみであり,ex0806a.c はコンパイルと実行に使うだけなので間違えないこと)
関数 get_sum_prime では,引数として与えられた int 配列 a について,その配列 a の中で素数のみの合計を求めて返すものとする(※合計値のための変数を 0 で初期化するのを忘れないこと).
なお,素数判定に関しては,同じヘッダの中に関数 is_prime があらかじめ用意されているのでそちらを使いなさい.
この問題では,入力された SIZE 個の整数がいったんすべて配列へ格納され,その中で素数だけの合計を表示させている(SIZE はマクロで定義されている).
【注意】
この問題では ex0806a.h を提出しなさい(ex0806a.c ではない).
また,マクロの定義部分以外に 5 や 4 と直接書いてはいけません.
【ヒント】
配列内の要素 a[i] が素数かどうかを判定するだけならば次のように書けます:
if ( is_prime( a[i] ) )
{
素数の場合の処理
}
後は,これを適切に繰り返しながら,素数の合計を求めていくことになります.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:2 3 4 5 6 素数の合計は 10 です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:4 6 2 9 10 素数の合計は 2 です⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:1 1 1 1 1 素数の合計は 0 です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
例えば,素数の合計値が違っていたり,
合計値を求めるための変数を 0 で初期化していなかったりする.
■ 既に素数判定のための関数 is_prime が用意されているのに,
それを呼出さずにわざわざそれとは別に素数判定のプログラムを自分で書いている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 5 (ex0805a.h) ]
ミスが無いことを確認したら次の問題へ → [ 問7 (ex0807a.h) ]