ここから本文です

#include<stdio.h>

アバター

ID非公開さん

2017/10/2301:26:05

#include<stdio.h>

#include<math.h>
int main(void)
{
int i,n,sum,sumv,squ,dec;
float ave=0.00,dev=0.00;
int data[n];
printf("個数を入力してください。:"); scanf("%d個",&n);
sum=0;
for(i=1;i<=n;i++){
printf("%d番目:",i); scanf("%d",&data[i]);
sum+=data[i];
sumv+=data[i]*data[i];
}
ave=sum/n;
squ=sumv-(sum*sum/n);
dec=squ/(n-1);
dev=sqrt(dec);
printf("合計:%d\n",sum);
printf("平均:%.2f 標準偏差:%.2f\n",ave,dev);
return 0;
}
以上のプログラミングを*p++をつかって書き換えようと思って写真のようにプログラミングしました。
しかし、コンパイルはできたのですが、標準偏差のとこが-nanとなってしまいます。ほかの合計平均は正確にでます。どこを変えたらよいですか?

include&amp;lt,printf,標準偏差,stdio.h&amp;gt,float ave,normal end,ポインタ

閲覧数:
38
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

rhi********さん

2017/10/2303:17:51

/*
統計計算の式の扱い、ポインタ増分計算実行に誤解あり
下記は修正ソースとそのテスト結果です。
1.プログラムの前に、統計計算式の成り立ちを理解すること
2.ポインタの++インクリメントでポインタが何時どのように変化?
これらを地道に理解すれば正しいソースをつくれます、もう少し!
*/
// Visual C++ 2013
#define _CRT_SECURE_NO_WARNINGS

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

int main(){
_int__ i,n;
_double_ave,sum,ssm;__/* float は double で良い */
_double_vrs,sdv;
_// 通常doubleでメモリーを差し支えるケースが殆どない
_// 実行速度も速いが、何よりコンパイルで警告の邪魔がない
_int__ data[100]={0};
_int__ *p=data;
_
_printf("個数を入力して下さい。:");_ scanf("%d",&n);
_/*__for(i=1;i<=n;i++){
_____*p++=i+1;
_}*/
_ssm=sum=0;
_for(p=data,i=1;i<=n;i++,p++){
___printf("%d個目:",i);_scanf("%d",p);
___sum += *p;______/* 和 */
___ssm += *p**p;____ /* 平方和 */
_}
_ave = sum/n;_______/* 平均 */
_vrs = ssm/n-ave*ave;___/* 分散 */
_/* squ=sumv-(sum*sum/n);
__ dec=squ/(n-1); */
_sdv = sqrt(vrs);_____/* 標準偏差 */
_/* dev=sqrt(dec); */
_printf("合計:%.0f\n",sum);
_printf("平均:%.2f 標準偏差:%.2f\n",ave,sdv);
_
_printf("\n# NORMAL END #\n"); /* ユーザプログラム正常終了確認 */
_return 0;
}
/* 実行出力:console
個数を入力して下さい。:3
1個目:50
2個目:100
3個目:0
合計:150
平均:50.00 標準偏差:40.82

# NORMAL END #
続行するには何かキーを押してください . . .
*/

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる