エラーがでます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
エラーになってしまうんです。。。

エラーがでます

#1

投稿記事 by エラーになってしまうんです。。。 » 15年前

/*
プログラム1-3(Prog1-3.cpp)
ファイル入出力
*/
#include <stdio.h>
#include <stdlib.h>

#define INFILE "normal.csv"
#define OUTFILE "result.txt"
#define LF 0x0A /* 改行コード */

void dsperr(const char *);
double *dvector(int);
int get_num(FILE *);
void read_vec(FILE *,double *,int);

int main(void)
{
FILE *fp;
int i,n;
double *x,s,ss,avg,var;

if((fp=fopen(INFILE,"r"))==NULL)
dsperr("ファイルを開くことができません.");
n=get_num(fp); /* データ数を取得 */
x=dvector(n);
rewind(fp); /* ファイルの位置指定を先頭に戻す */
read_vec(fp,x,n);
fclose(fp); /* ファイルを閉じる */
s=ss=0;
for(i=0,max=x,min=x;i<n;++i){
s+=x;
ss+=x*x;
if(max<x){max=x;}
if(min>x){min=x;}
}
avg=s/n; /* 平均 */
var=ss/n-avg*avg; /* 分散 */
range=max-min/*最大-最小*/
if((fp=fopen(OUTFILE,"w"))==NULL)
dsperr("ファイルを開くことができません.");
fprintf(fp,"データ数 = %d: 平均 = %f: 分散 = %f\n",n,avg,var);
fclose(fp);
free(x);
return EXIT_SUCCESS;
}

/* メッセージを出力して強制終了 */
void dsperr(const char *msg)
{
fprintf(stderr,"%s\n",msg);
exit(EXIT_FAILURE);
}

/* サイズ n の double 型 1 次元配列のメモリ確保,及びゼロで初期化 */
double *dvector(int n)
{
double *v;

v=(double *)calloc(n,sizeof(double));
if(!v) dsperr("メモリ確保失敗");
return v;
}

/* CSV 形式のファイルから標本サイズを調べる */
int get_num(FILE *fp)
{
int n=0;

while(!feof(fp)) /* EOF に達するまで LF の数を調べる */
if(LF==fgetc(fp)) ++n;
return n;
}

/* データ読み込み */
void read_vec(FILE *fp,double *x,int n)
{
int i;

for(i=0;i<n;++i)
fscanf(fp,"%lf",&x);
}
/* EOF */
もともと平均と分散のみを記述したプログラムに、データの最大と最小を求める関数を付け足して、レンジを出力するプログラムにしたんですが、エラーがでます!データの最大と最小を求めるところでエラーがでるんですがこのプログラムのどこをどう直したら良いのでしょうか????
教えてくださいお願いします。

ドラ

Re:エラーがでます

#2

投稿記事 by ドラ » 15年前

ケアレスミスが多いです。
以下を修正すればとりあえずコンパイルは通ります。
(内容までは吟味していませんが・・・)

・定義していない変数(max, min, range)をいきなり使用している。
・全角の{ }が混入。
・セミコロンのつけ忘れ。

初級者

Re:エラーがでます

#3

投稿記事 by 初級者 » 15年前

「どんな」エラーが出るのですか?

コンパイル時のエラーであれば、
なるべくご自分で修正してください。

エラー

Re:エラーがでます

#4

投稿記事 by エラー » 15年前

range の定義が定義されていないとでるんです・・・定義していない変数をつかっているとでるんですよ

non

Re:エラーがでます

#5

投稿記事 by non » 15年前

double range;
と宣言します。

ドラさんが指摘されている部分をまずチェックしてください。

閉鎖

“C言語何でも質問掲示板” へ戻る