ページ 1 / 1
宿題 標準偏差、平均について
Posted: 2014年7月11日(金) 15:02
by kbtit
問1:人数nを入力し、n人の成績(整数)を入力する。
1. 平均点を求めよ
2. 各人の点数と平均点との差の2乗の平均を求めよ
3. その平均の平方根を求めよ(これを標準偏差という)
4. 下にある式にしたがって各人の偏差値を求めよ
問2:上問とどうようであるが、科目数を3科目で行え
注:平方根を求めるので#include <math.h>を上のほう
に書いておくこと
という問題の答えを知りたいです当方初心者です
別の課題で
#include<stdio.h>
main(){
int a[10],i,hako;
for(i=0;i<10;i++){
printf("a[%d]? ",i);scanf("%D",&a);
}
for(i=0;i<5;i++){
hako=a; a=a[9-i]; a[9-i]=hako;
}
for(i=0;i<10;i++)printf("a[%d]<-%d\n",i,a);}
をやりました これの応用のようです
Re: 宿題 標準偏差、平均について
Posted: 2014年7月11日(金) 16:41
by amehirune
管理人ではありませんが。。。
宿題・課題の丸投げ等は、フォーラムルールに禁止事項として掲載されております。
ご確認ください。
まずは、
①どこまで考えたのか(ソースコードを載せることを推奨)
②具体的にどの部分がわからないのか
を記載してください。
また、コードを載せる際はタグで囲ってください。見やすくなりますので^^
Re: 宿題 標準偏差、平均について
Posted: 2014年7月14日(月) 13:00
by kbtit
ルール破り申し訳ないです
----------------------------翻訳中---------------------------
コード:
#include<stdio.h>
#include<math.h>
main(){
int data[100],i,number,sum;
float average,dif[100],sum2,average2,sda[100];
printf("全部で何人ですか?\n");
scanf("%d",&number);
printf("%d人です\n",number);
sum=0;
for(i=0;i<number;i++){
printf("%dさんの点数 ",i);
scanf("%f",&data[i]);
sum = sum + data[i];
}
printf("総和は%fです",sum);
average = sum / number;
printf("平均は%f点です。",average);
average = (float)sum/number;
sum2 = 0;
for(i=0;i<number;i++){
dif[i]=(data[i]-average)*(data[i]-average);
printf("%dさんの点数と平均点との差の2乗は%fです。\n",i,dif[i]);
sum2=sum2+dif[i];
}
average2 = sum2 / number;
printf("差の二乗の平均は%fです\n",average2);
printf("標準偏差は%f\n",sqrt(average2));
for(i=0;i<number;i++){
//sda[i]=sqrt(average2);
//printf("%d%f\n",i,sda[i]);
printf("%d人目の偏差値は%fです\n",i,(10*(data[i]-average)/sqrt(average2))+50);
}
}
ここまでやりました
総和 平均の表示が手計算と違うのでおかしいです
全部で何人ですか?
2
2人です
0さんの点数 1
1さんの点数 2
総和は0.000000です平均は1069547520.000000点です。0さんの点数と平均点との差の2乗
は17592186044416.000000です。
1さんの点数と平均点との差の2乗は17592186044416.000000です。
差の二乗の平均は17592186044416.000000です
標準偏差は4194304.000000
0人目の偏差値は40.000000です
1人目の偏差値は60.000000です
翻訳実行するとこうなります
Re: 宿題 標準偏差、平均について
Posted: 2014年7月14日(月) 16:44
by box
字下げがグチャグチャで読みづらいので直しました。
書式文字列も直しました。
コード:
#include <stdio.h>
#include <math.h>
int main(void)
{
int data[100], i, number, sum;
float average, dif[100], sum2, average2, sda[100];
printf("全部で何人ですか?\n");
scanf("%d", &number);
printf("%d人です\n",number);
sum = 0;
for (i = 0; i < number; i++){
printf("%dさんの点数 ", i);
scanf("%d", &data[i]);
sum = sum + data[i];
}
printf("総和は%dです\n", sum);
average = (float) sum / number;
printf("平均は%f点です。\n", average);
sum2 = 0;
for (i = 0; i < number; i++) {
dif[i] = (data[i] - average) * (data[i] - average);
printf("%dさんの点数と平均点との差の2乗は%fです。\n", i, dif[i]);
sum2 = sum2 + dif[i];
}
average2 = sum2 / number;
printf("差の二乗の平均は%fです\n", average2);
printf("標準偏差は%f\n", sqrt(average2));
for (i = 0; i < number; i++) {
//sda[i]=sqrt(average2);
//printf("%d%f\n",i,sda[i]);
printf("%d人目の偏差値は%fです\n", i, (10 * (data[i] - average) / sqrt(average2)) + 50);
}
return 0;
}