プロが教えるわが家の防犯対策術!

C言語の問題で、点数の平均、標本分散、標準偏差(標本分散の平方根)最小値、最大値を求めるプログラムを作成せよ。という問題について教えてください!
働きは下のような感じです。
1 100人分の点数(int型)を記憶する配列定数aを定義
2 人数(int型)を記憶するための変数nを定義
3 人数nの初期値を0とする
4 点数をキーボードから入力しa[n]に代入する
5 点数が負の値なら終了する
6 全員の点数を空白で区切って表示する
7 平均点を出力する
8 標本分散を出力する
9 標準偏差を出力する
10 最小値を出力する
11 最大値を出力する
12 人数nを1つ増やす
13 4に戻る

実行例(点数を入力:のところはキーボードから入力)
点数を入力:80
平均点:80.000000
標本分散:0.000000
標準偏差:0.000000
最小値:80
最大値:80
点数を入力:60
点数:80 60
平均点:70.000000
標本分散:100.000000
標準偏差:10 .000000
最小値:60
最大値:80
点数を入力:40


A 回答 (3件)

#include <stdio.h>


#include <stdlib.h>
#include <math.h>

const int PerfectScore = 100;

int imacoward(int a[], int n) {
 int i;
 printf("点数:");
 for (i = 0; i <= n; i++) {
   printf("%d", a[i]);
  if (i != n) {
   printf(" ");
  } else {
   printf("\n");
  }
 }
 return n;
}

double copiedanswer(int a[], int n, double avg) {
 double sum = 0.0;
 int i;
 for (i = 0; i <= n; i++) {
  sum += pow(a[i] - avg, 2);
 }
 return sum / (n + 1);
}

int main(void) {
 int a[100];
 int n = 0;
 char oo[4];
 double ge = 0.0;
 double t, e;
 int ih = 0;
 int so = PerfectScore;

 while(1) {
  scanf("%3s%*[^\n]%*c", oo);
  a[n] = atoi(oo);
  if (a[n] < 0) { return EXIT_SUCCESS; }
  if (a[n] > PerfectScore) { a[n] = PerfectScore; }
  if (n != 0) { imacoward(a, n); }
  ge += a[n];
  t = ge / (n + 1);
  printf("平均点:%lf\n", t);
  e = copiedanswer(a, n, t);
  printf("標本分散:%lf\n", e);
  printf("標準偏差:%lf\n", sqrt(e));
  if (a[n] > ih) { ih = a[n]; }
  if (a[n] < so) { so = a[n]; }
  printf("最小値:%d\n", so);
  printf("最大値:%d\n", ih);
  n++;
 }
 return EXIT_SUCCESS;
}
    • good
    • 0

その問題について「何を」聞いている?

    • good
    • 2

プログラミングに最も必要なスキルは「検索」



https://www.google.com/search?client=opera&q=C言語+標準偏差+平均&sourceid=opera&ie=UTF-8&oe=UTF-8
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング