配列に入った点数情報から、一定点数以上の人数をカウントしたいプログラムを作成したいときがあるでしょう。
今回は、そんな〇〇点数以上の人数を数えるプログラムの書き方について解説していきます。
サンプルコード
まずはサンプルコードです。コチラのサンプルコードでは60点以上の人数をカウントするプログラムとなっています。
#include<stdio.h>
int main() {
int scores[] = { 45,74,82,46,13,66,91,26,39,85,8 };
int len = sizeof(scores) / sizeof(int);
int border = 60;
int count = 0;
for (int i = 0; i < len; i++) {
if (scores[i] >= border) {
count++;
}
}
printf("%d点以上の方は%d人です\n", border, count);
return 0;
}
解説
配列に入った点数から一定の点数以上の人数をカウントする場合は、for文を使ったループ処理が最適です。
配列の要素数が何個あっても大丈夫なように、4行目のint len = sizeof(scores) / sizeof(int)
で配列の要素数(ループ回数)を計算しています。
sizeof
とは、指定した変数や値・型のバイト数を計算できる演算子です。例えばint型は通常4バイトなのでsizeof(int)
は4が返ってきます
sizeof演算子は配列にも適用できるので、sizeof(scores)
とすれば、配列の要素数分のバイト数が返ってきます。
あとは、配列のバイト数÷配列の型のバイト数
を計算すれば、配列の要素数を計算することが可能です
6行目では条件判定に使う点数のボーダーライン。今回は60点以上をカウントできるようにint border = 60;
としています。
7行目のint count = 0;
は、60点以上の人数をカウントする用のカウンター変数です。
あとはforループ内の9行目if (scores[i] >= border)
で点数のボーダーラインを超えているかを判定して、超えていたら人数をカウントアップ。
最終的にボーダーラインを超えていた人数を14行目のprintf関数
で表示しています。
ここまでが、特定の条件を満たした人数をカウントするプログラムの書き方です。
forループを使った基礎的なプログラムでもあるので、色々改良して試行錯誤してみてください。