#include <stdio.h>
#define LENGTH 7
/* 要素数がnのintの配列vに含まれるintの和(nが1未満の場合は0)を返す */
int sum(const int v[], int n)
{
}
/* 要素数がnのintの配列vにintの値aが含まれる場合はその位置(複数含まれる場合は任意の1つ)を返し,含まれない場合は-1を返す */
int contains(const int v[], int n, int a)
{
}
/* 要素数がnのintの配列vに含まれるintの値aの個数を返す */
int number(const int v[], int n, int a)
{
}
int main(void)
{
int i;
int x[LENGTH];
for (i = 0; i < LENGTH; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}
printf("sum(x, %d) = %d\n", LENGTH, sum(x, LENGTH));
printf("contains(x, %d, 3) = %d\n", LENGTH, contains(x, LENGTH, 3));
printf("number(x, %d, 3) = %d\n", LENGTH, number(x, LENGTH, 3));
return 0;
}
x[0] : 1
x[1] : 2
x[2] : 3
x[3] : 4
x[4] : 5
x[5] : 6
x[6] : 7
sum(x, 7) = 28
contains(x, 7, 3) = 2
number(x, 7, 3) = 1
上記のプログラムをその下の結果になるように書き換えたいのですが何度やってもうまくいきません。ヒントややり方など教えていただければ幸いです。
下のものは僕の回答です。ご教授よろしくお願いいたします。
#include <stdio.h>
#define LENGTH 7
/* 要素数がnのintの配列vに含まれるintの和(nが1未満の場合は0)を返す */
int sum(const int v[], int n)
{
int i;
int sum=0;
for(int i=0;i<=n;i++);
return sum;
}
/* 要素数がnのintの配列vにintの値aが含まれる場合はその位置(複数含まれる場合は任意の1つ)を返し,含まれない場合は-1を返す */
int contains(const int v[], int n, int a)
{
int i;
for(i=-1;i<n && a!=v[i+1];i++);
return i+1;
}
/* 要素数がnのintの配列vに含まれるintの値aの個数を返す */
int number(const int v[], int n, int a)
{
int n=0;
for(int i=0;i<n ;n+=(v[i++]==a));
return n;
}
int main(void)
{
int i;
int x[LENGTH];
for (i = 0; i < LENGTH; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}
printf("sum(x, %d) = %d\n", LENGTH, sum(x, LENGTH));
printf("contains(x, %d, 3) = %d\n", LENGTH, contains(x, LENGTH, 3));
printf("number(x, %d, 3) = %d\n", LENGTH, number(x, LENGTH, 3));
return 0;
}