fpaの参照しているfnameaファイルから500行2列の数字列を受け取り、posに保存してからそれをexpansionメソッドに代入して数値を変換してfnamebファイルに出力するというプログラムです。
C
1#include <stdio.h> 2 3//double (*expansion(double p[500][2]))[2]; 4void expansion(double x0[500][2]); 5int main(){ 6 int ret, i = 0; 7 FILE *fpa , *fpb; 8 char *fnamea = "data.csv"; 9 char *fnameb = "data2.csv"; 10 double pos[500][2]; 11 double x, y; 12 13 fpa = fopen(fnamea , "r"); 14 if(fpa == NULL){ 15 printf("ファイルが開けません"); 16 return -1; 17 } 18 fpb = fopen(fnameb , "w"); 19 if(fpb == NULL){ 20 printf("ファイルが開けません"); 21 return -1; 22 } 23 24 while((ret = fscanf(fpa, "%lf,%lf", &x , &y)) != EOF){ 25 pos[i][0] = x; 26 pos[i][1] = y; 27 i++; 28 } 29 expansion(pos); 30 31 for(i = 0; i < 500; i++){ 32 fprintf(fpb, "%lf,%lf\n", pos[i][0], pos[i][1]); 33 } 34 fclose(fpa); 35 fclose(fpb); 36} 37 38void expansion(double x0[500][2]) { 39 double H = 3.5; 40 double org = 50; 41 double dt = 0.1; 42 int nk = 20 , i = 0 , j = 0 , k = 0; 43 double vx[500][2] , x[500][2]; 44 for(i = 0; i < 500; i++){ 45 for(j = 0; j < 2; j++){ 46 vx[i][j] = H * x0[i][j]; 47 x[i][j] = x0[i][j] + org; 48 for(k = 0; k < nk; k++){ 49 x[i][j] += vx[i][j] * dt; 50 } 51 } 52 } 53 x0 = x; 54}
このようにするとエラーは吐かないのですが、出力結果がfnameaと同じ数字になってしまいます。
どうしてでしょうか、回答宜しくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/26 03:30
2017/01/26 03:40
2017/01/26 03:41
2017/01/26 04:29
2017/01/26 04:39
2017/01/26 06:25
2017/01/26 09:13
2017/01/27 08:08
2017/01/29 14:57