このページの解説は C99 をベースとしています。
以下は目次です。
配列のすべての要素を調べて、目的の値が何個あるかを知りたいとします。要素の型は「==」で一致しているかどうかを調べられるものであれば、何でも構いません。
array_count_values という関数にすることを考えます。引数には、配列(を指すポインタ)と、配列の要素数、探したい値を指定し、戻り値で個数が返されるようにします。
#include <stdio.h>
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
int main(void)
{
int array[] = {7, 2, 6, 2, 2, 9, 1, 3};
("%zu\n", array_count_values(array, SIZE_OF_ARRAY(array), 2));
printf}
array から 2 の個数を探しているので、望む結果は 3 です。そうなるように、array_count関数を実装します。
SIZE_OF_ARRAYマクロは、配列の要素数を取得するものです。詳細は「逆引き 配列の要素数を求める」を参照してください。
要素を1つずつ調べて、一致する回数をカウントすればいいでしょう。
#include <stdio.h>
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
/*
配列に含まれている、指定の値に一致する要素の個数を調べる
引数
array: 対象の配列
size: array の要素数
value: 探したい値
戻り値
value に一致した要素の個数
*/
size_t array_count_values(const int* array, size_t size, int value)
{
size_t count = 0;
for (size_t i = 0; i < size; ++i) {
if (array[i] == value) {
++count;
}
}
return count;
}
int main(void)
{
int array[] = {7, 2, 6, 2, 2, 9, 1, 3};
("%zu\n", array_count_values(array, SIZE_OF_ARRAY(array), 2));
printf}
実行結果:
3
個数をカウントするための変数 count を用意しておき、要素の値と、目的の値が一致するたびに +1 していきます。count に初期値 0 を与えておくことを忘れないようにしましょう。
この方法は、== で比較できるのならば、要素の型が変わっても通用します。
{
の直後と、}
の直前に空白を入れない)(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |