【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19895

配列の標準偏差
投稿者---美咲(2005/02/13 17:42:43)


整数配列の標準偏差を計算し返す関数 doubel stdv(int *a, int n)
                                   ↑                          
                                  a[]
1,2,3,4,5を確かめよ。             (int a[],int b[],int n)

どなたか、この問題わかる方いませんか?
周りの人たちの知り合いという知り合いに聞いてもわからなくて・・・
本当に困ってます。どうかよろしくお願いします。   


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列の標準偏差 19896 南野骨茶 2005/02/13 17:53:59
<子記事> Re:配列の標準偏差 19922 Blue 2005/02/14 15:21:49


No.19896

Re:配列の標準偏差
投稿者---南野骨茶(2005/02/13 17:53:59)


>どなたか、この問題わかる方いませんか?

具体的にどこがおわかりにならないのでしょうか。
標準偏差の求め方そのものですか?あるいは、それはわかっているけれども、
C言語でどうプログラミングすればいいか、という点ですか?


この投稿にコメントする

削除パスワード

No.19897

Re:配列の標準偏差
投稿者---美咲(2005/02/13 18:11:18)


説明不足ですいません。C言語でのプログラムの作り方がわかりません。下のように作ってみたのですが、どうでしょうか?





// 平均値と標準偏差
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

int main()
{
cout << "5個の整数データを入力してください:" << endl;

const int n = 5; // データ数
int data[n];// 入力データを納める配列
double sum = 0.0;

// データを入力して平均値を求める
int i;
for(i = 0; i< n; i++){
cout << setw(3) << i+1 << ": ";
cin >> data[i];
sum += data[i];
}
double ave = sum /n; // 平均値
cout << " 合計値: " << sum << endl
<< " 平均値: " << ave << endl;

// 標準偏差を求める
sum = 0.0;
for(i = 0; i < n; i++)
sum += ( data[i] - ave ) * ( data[i] - ave );

double stdv = sqrt( sum /n );
cout << "標準偏差:" << stdv << endl;

return 0;
}



この投稿にコメントする

削除パスワード

No.19898

Re:配列の標準偏差
投稿者---monkey(2005/02/13 18:52:00)


>説明不足ですいません。C言語でのプログラムの作り方がわかりません。下のように作ってみたのですが、どうでしょうか?

これはC++言語ですね。
文法的には正しいし、書いたとおりの動作はすると思います。
ただし、C++言語標準化後の標準ライブラリヘッダファイルは、拡張子がなく、Cから引き継いだライブラリはファイル名の先頭に'c'がつけられ、標準関数等の名前はstd名前空間に含まれます。
標準C++にあわせるための最低限の修正をするなら、ヘッダファイルインクルードのところを次のようにすれば良いでしょう。
# using ... については教科書などで調べて下さい。

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    以下略

で、この処理をC言語でどう書くか分からないというご質問なのですか?


この投稿にコメントする

削除パスワード

No.19900

Re:配列の標準偏差
投稿者---美咲(2005/02/13 19:07:27)


はい。そうです。


この投稿にコメントする

削除パスワード

No.19903

Re:配列の標準偏差
投稿者---monkey(2005/02/13 20:03:12)


>はい。そうです。

この処理であれば、CとC++の違いは入出力の処理ぐらいですね。
"stdio.h"ヘッダファイルで定義されるCの標準関数"scanf", "printf"あたりを調べれば良いでしょう。
この掲示板の管理人様のホームページでも使用例を含めて解説されています。


この投稿にコメントする

削除パスワード

No.19916

Re:配列の標準偏差
投稿者---美咲(2005/02/14 14:16:08)


ありがとございます。


この投稿にコメントする

削除パスワード

No.19899

Re:配列の標準偏差
投稿者---南野骨茶(2005/02/13 18:58:55)


>説明不足ですいません。C言語でのプログラムの作り方がわかりません。下のように作ってみたのですが、どうでしょうか?

C++ですね。
正しい結果を出力しますので、特に問題なさそうです。

なお、次回からソースをアップロードなさる際は、
掲示板の先頭に書いてあるとおり「HTML変換ツール」を
通してください。


この投稿にコメントする

削除パスワード

No.19902

Re:配列の標準偏差
投稿者---美咲(2005/02/13 19:37:15)


いろいろありがとうございます。


この投稿にコメントする

削除パスワード

No.19922

Re:配列の標準偏差
投稿者---Blue(2005/02/14 15:21:49)


>整数配列の標準偏差を計算し返す関数 doubel stdv(int *a, int n)
一応できてるみたいだから、関数化してみました。a,nの値は予想ですw


/*----------------------------------*/
/* 【関数名】                       */
/*   double stdv( int* a, int n )   */
/* 【概要】                         */
/*   指定した配列の標準偏差を求める */
/* 【引数】                         */
/*   a : 配列の先頭ポインタ         */
/*   n : 配列の要素数               */
/* 【戻り値】                       */
/*   double : 指定配列の標準偏差    */
/*----------------------------------*/
double stdv( int* a, int n )
{
    double dSum = 0.0;  /* 合計 */
    double dAve;        /* 平均 */
    int    nLoop;       /* ループ用変数 */
    
    /* 平均を求める処理 */
    /* X = ΣXi / n     */
    for ( nLoop = 0; nLoop < n; nLoop++ )
    {
        dSum += ( double )a[ nLoop ];
    }
    dAve = dSum / n;

    /* 標準偏差を求める処理           */
    /* σ = √( Σ( Xi - X )^2 / n )  */
    dSum = 0.0;
    for ( nLoop = 0; nLoop < n; nLoop++ )
    {
        dSum += pow( a[ nLoop ] - dAve, 2.0 );
    }
    return sqrt( dSum / n );
}





この投稿にコメントする

削除パスワード

No.19933

Re:配列の標準偏差
投稿者---美咲(2005/02/14 18:43:33)


詳しくてわかりやすい解答有難う御座います。
本当に申し訳ないのですが、実行してみた所できませんでした。
どのようにすればいいでしょうか?すいません。知識がなくて・・・


この投稿にコメントする

削除パスワード

No.19935

Re:配列の標準偏差
投稿者---Blue(2005/02/14 19:33:36)


入力は考えてね。
stdv関数はプロトタイプ宣言しかしてないので
No.19922のソースを最後に追加しといて。

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

double stdv( int* a, int n );

#define SIZE 5

int main( void )
{
    int       nData[ SIZE ] = { 1, 2, 3, 4, 5 };
    int       nSum = 0;
    double    dStdv;
    int       nLoop;
    
    puts( "---配列内容---" );
    for ( nLoop = 0; nLoop < SIZE; nLoop++ )
    {
        printf( "% 3d:% 3d\n", nLoop + 1, nData[ nLoop ] );
        nSum += nData[ nLoop ];
    }

    puts( "---解析結果---" );
    printf( "合計     = %d\n", nSum );
    printf( "平均     = %lf\n", ( ( double )nSum ) / SIZE );
    
    dStdv = stdv( nData, SIZE );
    /* または
    dStdv = stdv( &data[ 0 ], SIZE );
    */
    
    printf( "標準偏差 = %lf\n", dStdv );
    
    return EXIT_SUCCESS;
}

# 私はものすごく甘いですね。。。



この投稿にコメントする

削除パスワード

No.19937

Re:配列の標準偏差
投稿者---美咲(2005/02/14 19:55:55)


実行することができました。すいません。本当に有難う御座います。誰に聞いてもわからなかったので、本当に助かりました。本当に有難う御座いました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧