ページ 11

宿題 標準偏差、平均について

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;
}