無題
無題
入力に2つのデータを用いて行います。
I番目の入力データをXi,出力される移動平均の値をmiとして
mi=1/NΣj=i-(n-1) i Xj
この場合のプログラミングについて分からないのでご指導よろしくお願いします。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main (void){
FILE *fp;
FILE *FP;
int i,t,N;
float S=0;
printf("N=");
scanf("%d",&N);
float x[N];
fp=fopen("input.dat","r");
FP=fopen("output.dat","w");
for(i=0;i<N-1;i++){
fscanf(fp,"%f",&x);
S=S+x;
}
while(fscanf(fp,"%f",&x[N-1])!=EOF){
S=S+x[N-1];
fprintf(FP,"%f\n",S/N);
S=S-x[0];
for(t=1;t<N;t++)
x[t-1]=x[t];
}
fclose(fp);
fclose(FP);
return 0;
}
これで宜しいのでしょうか?
申し訳ありませんが、よろしくお願いします。
I番目の入力データをXi,出力される移動平均の値をmiとして
mi=1/NΣj=i-(n-1) i Xj
この場合のプログラミングについて分からないのでご指導よろしくお願いします。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main (void){
FILE *fp;
FILE *FP;
int i,t,N;
float S=0;
printf("N=");
scanf("%d",&N);
float x[N];
fp=fopen("input.dat","r");
FP=fopen("output.dat","w");
for(i=0;i<N-1;i++){
fscanf(fp,"%f",&x);
S=S+x;
}
while(fscanf(fp,"%f",&x[N-1])!=EOF){
S=S+x[N-1];
fprintf(FP,"%f\n",S/N);
S=S-x[0];
for(t=1;t<N;t++)
x[t-1]=x[t];
}
fclose(fp);
fclose(FP);
return 0;
}
これで宜しいのでしょうか?
申し訳ありませんが、よろしくお願いします。
Re:無題
>mi=1/NΣj=i-(n-1) i Xj
この式の意味が理解できないのですが・・・
j なんて変数は条件文にないですし、
四則演算がどのような順序かも明白ではありません。
こんな感じですか?(恐らく違うかと思いますが・・・)
mi = 1/(NΣj) = i - (n-1) * i * Xi
また、入力ファイルにはどのような情報が格納されていてるのでしょうか?
一つのファイルに二種類のデータが格納されているということですか?
では、N個の入力値を配列に格納し、その総和を求めているで分かりますが、
それ以降、何がしたいのかが良く分かりません。
あと環境も書いたほうがいいかと思います。
gccだとたしか、
int N;
...
int ary[N];
と出来なかたった気がします。
(誤りでしたらすみません。。)
また、main関数に戻り値の型がないのに対し、
return 0;
としているので、環境によってはコンパイルが通らないかと。
コードを載せる際は、規約通り、プレタグでかこってくださいね。
この式の意味が理解できないのですが・・・
j なんて変数は条件文にないですし、
四則演算がどのような順序かも明白ではありません。
こんな感じですか?(恐らく違うかと思いますが・・・)
mi = 1/(NΣj) = i - (n-1) * i * Xi
また、入力ファイルにはどのような情報が格納されていてるのでしょうか?
一つのファイルに二種類のデータが格納されているということですか?
>for(i=0;i<N-1;i++){ >fscanf(fp,"%f",&x); >S=S+x; >}
では、N個の入力値を配列に格納し、その総和を求めているで分かりますが、
それ以降、何がしたいのかが良く分かりません。
あと環境も書いたほうがいいかと思います。
gccだとたしか、
int N;
...
int ary[N];
と出来なかたった気がします。
(誤りでしたらすみません。。)
また、main関数に戻り値の型がないのに対し、
return 0;
としているので、環境によってはコンパイルが通らないかと。
コードを載せる際は、規約通り、プレタグでかこってくださいね。
Re:無題
もしかしたら、前のプログラムは自分で組んだのではないということでしょうね。
それなら、そうと先に言ってくれればよかったのに。
2組作ればいいだけではないでしょうか。
なお、下のプログラムは試していません。(gccがないので)
それなら、そうと先に言ってくれればよかったのに。
2組作ればいいだけではないでしょうか。
なお、下のプログラムは試していません。(gccがないので)
#include <stdio.h> #include <math.h> #include <stdlib.h> int main (void){ FILE *fp; FILE *FP; int i,t,N; float S1=0,S2=0; printf("N="); scanf("%d",&N); float x[N],y[N]; fp=fopen("input.dat","r"); FP=fopen("output.dat","w"); for(i=0;i<N-1;i++){ fscanf(fp,"%f %f",&x,&y); S1=S1+x;S2=S2+y; } while(fscanf(fp,"%f %f",&x[N-1],&y[N-1])!=EOF){ S1=S1+x[N-1];S2=S2+y[N-1]; fprintf(FP,"%f %f\n",S1/N,S2/N); S1=S1-x[0];S2=S2-y[0]; for(t=1;t<N;t++){ x[t-1]=x[t]; y[t-1]=y[t]; } } fclose(fp); fclose(FP); return 0; }