一つ目だと564個のときしか測れないプログラムですがこれをさらに拡張して二つ目のように数がいくつのときでも平均を出せるようなプログラムにしたつもりですが平均値が全てnanになってしまいます。
どなたか解決方法を教えていただきたいです。
#include<stdio.h>
double average(double *a,int n)
{
int i;
double sum=0;
double heikin;
for(i=0;i<n;i++){
sum=sum+a[i];
}
heikin=sum/n;
return heikin;
}
void main()
{
int i,j,k,n=564; /* テストは n=2 本番では n=564 */
double a[564]; /*配列を定義する*/
FILE *fp_in; /*0:ファイルポインタの宣言(ファイルを扱う場合には,この宣言は必ず必要!)*/
FILE *fp_out;
char filepath[256];
fp_out=fopen("aa1.txt","w");
double Hei_kin;
if(fp_out==NULL){
printf("ファイルがありません\n");
return;
}
for(j = 1; j <= 26; j++){
sprintf(filepath,"a%d.txt",j);
fp_in=fopen(filepath,"r"); /*1:ファイルを読み込み専用で開く*/
if(fp_in==NULL){ /*1:エラーチェック*/
printf("ファイルがありませんでした.%\n");
return; /*1:プログラムの強制終了*/
}
for(i=0;i<n;i++){
fscanf(fp_in,"%le",&a[i]); /*2:ファイルからデータをスキャンし,配列に格納する.*/
}
k = 10 * j + 40; /* ??? わかんない(^^; */
Hei_kin=average(a,n);
fprintf(fp_out,"%d %le\n", k, Hei_kin);
fclose(fp_in); /*3:ファイルを閉じる(これを忘れると,ファイルが開いたままになる.)*/
}
fclose(fp_out);
}
#include<stdio.h>
double average(double *a,int n)
{
int i;
double sum=0;
double heikin;
for(i=0;i<n;i++){
sum=sum+a[i];
}
heikin=sum/n;
return heikin;
}
void main()
{
int i,j,k,n=564; /* テストは n=2 本番では n=564 */
double a[564]; /*配列を定義する*/
FILE *fp_in; /*0:ファイルポインタの宣言(ファイルを扱う場合には,この宣言は必ず必要!)*/
FILE *fp_out;
char filepath[256];
fp_out=fopen("aa1.txt","w");
double Hei_kin;
if(fp_out==NULL){
printf("ファイルがありません\n");
return;
}
for(j = 1; j <= 26; j++){
sprintf(filepath,"a%d.txt",j);
fp_in=fopen(filepath,"r"); /*1:ファイルを読み込み専用で開く*/
if(fp_in==NULL){ /*1:エラーチェック*/
printf("ファイルがありませんでした.%\n");
return; /*1:プログラムの強制終了*/
}
for(i=0;i<n;i++){
if(a[i] == '\0'){
break;
}
else{
fscanf(fp_in,"%le",&a[i]); /*2:ファイルからデータをスキャンし,配列に格納する.*/
}
}
k = 10 * j + 40; /* ??? わかんない(^^; */
Hei_kin=average(a,n);
fprintf(fp_out,"%d %le\n", k, Hei_kin);
fclose(fp_in); /*3:ファイルを閉じる(これを忘れると,ファイルが開いたままになる.)*/
}
fclose(fp_out);
}