演習6ー11
問:要素数nの配列v内のkeyと等しい全要素の添字を配列idxに格納する関数search_idxを作成せよ。返却するのはkeyと等しい要素を個数とする。たとえば、vに受け取った配列の要素が{1, 7, 5, 7, 2, 4, 7}で key が 7 であれば、idxに {1, 3, 6}を格納した上で3を返却する。
int search_idx(const int v[], int idx[], int key, int n)
// Ex0611.c
#include <stdio.h>
#define NUMBER 10
int search_idx(const int v[], int idx[], int key, int n)
{
int j = 0;
for (int i = 0; i < n; i++) {
if (v[i] == key) {
idx[i] = i + 1;
j++;
}
}
return j;
}
int main(void)
{
int i, n, y, x3;
int x1[NUMBER] = {0};
int x2[NUMBER] = {0};
do {
printf("入力する要素数を指定してください:");
scanf("%d", &n);
if (n <= 0 || n > NUMBER) {
printf("1 以上 %d 以下の整数を入力してください。\n", NUMBER);
}
} while (n <= 0 || n > NUMBER);
printf("%d 個の整数を入力して下さい。\n", n);
for (i = 0; i < n; i++) {
printf("x[%d] : ", i);
scanf("%d", &x1[i]);
}
printf("探す値を入力してください。:");
scanf("%d", &x3);
y = search_idx(x1, x2, x3, n);
puts("格納されている配列番号");
for (i = 0; i < n; i++) {
if (x2[i] > 0)
printf("%d ", x2[i]);
}
puts("\n");
printf("格納数:%d\n", y);
return 0;
}
コメント
問いの文章の意味がわからなくて何度も読み返したけど、楽しい試行錯誤だった。
書籍情報
コメント