教えて下さい
考え方が分からず困っています。プログラミングを0からある程度まで4日で終わらせる講座で悪戦苦闘しています。以下のような課題が出て、必死で考えているのですが分かりません。考え方のヒントを
頂ければと思っています。他力本願と思われるかもしれませんが、本当に困ってしまっているのでどなたかよろしくお願い致します。
下記のプログラムにおいて,numcountは,値が0 ~M -1 の範囲の大きさN のint型の配列を引数として渡されると(ただし,M, N は正の整数),同じ値が複数ある時はそれを1 個とみなしてその配列中の数の個数を返す関数である.例えば,配列の値を7, 4, 8, 2, 4, 6, 1, 6, 4, 5 とすると,(ダブリを省くと) この中には,7, 4, 8,2, 6, 1, 5 の7 個があるので,関数numcountは7 を返す.
これは,例えば,0 ~M -1 の範囲でどんな数が出てきたかをチェックしておき(ヒント: 大きさM のint型の配列を用い,最初はすべて0に初期化しておき,数iが現れたら,そのi番目を1にすればよい),
最後に1度でも出てきたものを数えれば求めることができる.関数numcountを,下記のプログラムの/* INSERT HERE */の部分に挿入できるように書け.(提出はプログラム全体)
#include <stdio.h>
#define M 10 /* 適当な正整数(数の範囲が0 ~M -1) */
#define N 10 /* 適当な正整数(入力する数の個数)*/
/* INSERT HERE */
int main(void)
{
int i, a[N];
/* a[0]~a[N-1] の値を入力する*/
for(i= 0; i< N; i++) {
printf("a[%1d] = ? ", i);
scanf("%d", &a[i]);
}
printf("numcount= %3d¥n", numcount(a));
return 0;
}