#1
by 学校でやらされている初心者 » 2年前
学校でやらされているだけのc言語初心者です。
課題は「10名の体重と身長を調べ平均値を算出し,作成したプログラムを用いて体重と身長の間の相関を示す回帰直線の係数a,bを求めよ。ただし、関数を用いる(平均値と係数の算出は副プログラム)。また、a= (x - mx) * (y - my) / (x - mx) * (x - mx)、b = my - a * mxで求める。mxは10名の平均身長、myは10名の平均体重。」です。
自分でもやってみたのですがエラーが出てしまい出来ません。
ご回答よろしくお願いいたします。
[code]
#include<stdio.h>
float meanx(float x[], int n)
{ float mx, sumheight = 0;
int i;
for (i = 0; i <n; i++) { sumheight += x; }
mx = sumheight / n; return mx; }
float meany( float y[], int n)
{ float my, sumweight = 0;
int i;
for (i = 0; i <n; i++) { sumweight += y; }
my = sumweight / n; return my; }
void lmsq( float x[10], float y[10], int n, float* pa, float* pb)
{ float mean(float[], int i);
{ float mx, my, * pa, * pb, u = 0, v = 0, x[10], y[10];
int i;
for (i = 0; i <n; i++) { u += (x - mx) * (y - my);
v += (x - mx) * (x - mx); }
*pa = u / v;
*pb = my - *pa * mx; } }
int main(void) { int n, i; float x[10], y[10], mx, my, a, b;
void lmsq(float[], float[], int, float*, float*);
printf("人数=");
scanf_s("%d", &n);
for (i = 0; i <n; i++) {
printf("%d人目の身長(cm)=\n", i + 1); scanf_s("%f", &x[i]); printf("%d人目の体重(kg)=\n", i + 1); scanf_s("%f", &y[i]); }
mx = meanh(x, n); my = meanw(y, n);
a = lmsq(x, y, n, *pa, *pb); b = lmsq(x, y, n, *pa, *pb);
printf("身長の平均(cm)=%.1f\n", mx);
printf("体重の平均(kg)=%.1f\n", my);
printf("回帰直線の係数a=%f\n", a);
printf("回帰直線の係数b=%f\n", b);
return 0; }
[/code]
学校でやらされているだけのc言語初心者です。
課題は「10名の体重と身長を調べ平均値を算出し,作成したプログラムを用いて体重と身長の間の相関を示す回帰直線の係数a,bを求めよ。ただし、関数を用いる(平均値と係数の算出は副プログラム)。また、a= (x[i] - mx) * (y[i] - my) / (x[i] - mx) * (x[i] - mx)、b = my - a * mxで求める。mxは10名の平均身長、myは10名の平均体重。」です。
自分でもやってみたのですがエラーが出てしまい出来ません。
ご回答よろしくお願いいたします。
[code]
#include<stdio.h>
float meanx(float x[], int n)
{ float mx, sumheight = 0;
int i;
for (i = 0; i <n; i++) { sumheight += x[i]; }
mx = sumheight / n; return mx; }
float meany( float y[], int n)
{ float my, sumweight = 0;
int i;
for (i = 0; i <n; i++) { sumweight += y[i]; }
my = sumweight / n; return my; }
void lmsq( float x[10], float y[10], int n, float* pa, float* pb)
{ float mean(float[], int i);
{ float mx, my, * pa, * pb, u = 0, v = 0, x[10], y[10];
int i;
for (i = 0; i <n; i++) { u += (x[i] - mx) * (y[i] - my);
v += (x[i] - mx) * (x[i] - mx); }
*pa = u / v;
*pb = my - *pa * mx; } }
int main(void) { int n, i; float x[10], y[10], mx, my, a, b;
void lmsq(float[], float[], int, float*, float*);
printf("人数=");
scanf_s("%d", &n);
for (i = 0; i <n; i++) {
printf("%d人目の身長(cm)=\n", i + 1); scanf_s("%f", &x[i]); printf("%d人目の体重(kg)=\n", i + 1); scanf_s("%f", &y[i]); }
mx = meanh(x, n); my = meanw(y, n);
a = lmsq(x, y, n, *pa, *pb); b = lmsq(x, y, n, *pa, *pb);
printf("身長の平均(cm)=%.1f\n", mx);
printf("体重の平均(kg)=%.1f\n", my);
printf("回帰直線の係数a=%f\n", a);
printf("回帰直線の係数b=%f\n", b);
return 0; }
[/code]