下の添付プログラムの62行から73行あたり
(ここがわかりませんと書いているところです)が書けず
困っています。
私としては、
(1) 配列A[][]から座標(s,t)を読み込んで、
その座標におけるB,Cの値を配列B,Cへ格納できるようにする.
(2) (0,0)は(s,t)座標系の原点となるようにする.
(3) test.txtの座標値が変わってもちゃんと(1),(2)を満たすように
配列B,Cへ格納できるようにする.
(1)-(3)の流れをプログラム化すればよいと思うのですが、
どう書いてよいかわかりません。
どなたか、教えていただけませんでしょうか?
よろしくお願いします!
==== data.txt ===========
-1 -1 0.02 0.01
-1 0 0.03 0.02
-1 1 0.01 0.05
0 -1 0.04 0.06
0 0 0.05 0.07
0 1 0.06 0.08
1 -1 0.07 0.09
1 0 0.01 0.00
1 1 0.04 0.01
==========================
#include<stdio.h>
#include<stdlib.h>
FILE *fin;
FILE *fout;
int main(void){
int i,j,s,t;
int nn;
int ch;
int array_number;
double A[20][20],B[20][20],C[20][20];
// test.txtの行数をカウント
nn=0;
array_number=0;
if( (fin = fopen("data.txt","r")) == NULL ){
printf("error.file does not exist.\n");
exit(1);
}else{
while( (ch=fgetc(fin)) != EOF )
if (ch=='\n')
nn++;
array_number=nn;
printf("array_number = %d\n",array_number);
}
fclose(fin);
// test.txtのデータを読み込み配列A[][]に入れる
// s t B C
// -1 -1 0.02 0.01
// -1 0 0.03 0.02
// -1 1 0.01 0.05
// 0 -1 0.04 0.06
// 0 0 0.05 0.07
// 0 1 0.06 0.08
// 1 -1 0.07 0.09
// 1 0 0.01 0.00
// 1 1 0.04 0.01
fin = fopen("data.txt","r");
for(j=0;j<array_number;j++){
for(i=0;i<4;i++){
fscanf(fin, "%lf",&A[i][j]) != EOF;
}
}
fclose(fin);
// 確認
fout = fopen("check.txt","w");
for(j=0;j<array_number;j++){
for(i=0;i<4;i++){
fprintf(fout,"%lf\n",A[i][j]);
}
fprintf(fout,"\n");
}
fprintf(fout,"\n");
fclose(fout);
// ここがわかりません・・(--;
// [1] 配列A[][]から座標(s,t)を読み込んで、
// その座標におけるB,Cの値を配列B,Cへ格納できるようにする.
// [2] (0,0)は(s,t)座標系の原点となるようにする.
// [3] test.txtの座標値が変わってもちゃんと[1],[2]を満たすように
// 配列B,Cへ格納できるようにする.
for(t=0;t<20;t++){
for(s=0;s<20;s++){
B[s][t] = A[i][j];
C[s][t] = A[i][j];
}
}
// 結果の出力
fout=fopen("output.txt","w");
for(t=0;t<20;t++){
for(s=0;s<20;s++){
fprintf(fout,"%5d %5d %5.1f %5.1f\n",s,t,B[s][t],C[s][t]);
}
fprintf(fout,"\n");
}
fprintf(fout,"\n");
fclose(fout);
}