/*----------------------------*/ /* プログラム:gccHAZEN-png.c */ /*----------------------------*/ #include #include #include #include #define ND 1000 /*gnuplot用構造体宣言*/ /*scom,sxjiku,syjiku :タイトル(凡例),x軸ラベル,y軸ラベル*/ /*slogx,xmin,xmax,dx,sxfmt :x軸種,x軸最小値,x軸最大値,x軸増分,x軸書式*/ /*slogy,ymin,ymax,dy,syfmt :y軸種,y軸最小値,y軸最大値,y軸増分,y軸書式*/ struct GPdata{ char scom[100];char sxjiku[100];char syjiku[100]; char slogx[3];double xmin;double xmax;double dx;char sxfmt[20]; char slogy[3];double ymin;double ymax;double dy;char syfmt[20]; }; /*関数プロトタイプ*/ void main_part(char fnameR[50],char fnameW[50]); void GPLOT(char fnameW[50],struct GPdata gp,double aa,double bb,double rr); double TODA(double rx); void KAIKI(int ndata, double datax[ND], double datay[ND], double *aa, double *bb, double *rr); /*---------------------------------------------------------------------------*/ int main(int argc,char *argv[]) { char fnameR[50]=""; /*入力ファイル名*/ char fnameW[50]=""; /*出力ファイル名*/ strcpy(fnameR,argv[1]); strcpy(fnameW,argv[2]); main_part(fnameR,fnameW); printf("リターンキーを押してください"); getchar(); return 0; } /*---------------------------------------------------------------------------*/ void main_part(char fnameR[50],char fnameW[50]) { char dat[256]="",sv[100]=""; int i,j,ndata; double datax[ND],datay[ND],work; double aa,bb,rr; struct GPdata gp={ "","","", "",0.0,0.0,0.0,"", "",0.0,0.0,0.0,"" }; FILE *fin,*fout; double alpha = 0.5; /*Hazen公式*/ /*データ入力*/ fin=fopen(fnameR,"r"); fgets(dat,sizeof dat,fin); strcpy(sv,strtok(dat,",")); strncpy(gp.scom,sv,strlen(sv)-1); fgets(dat,sizeof dat,fin); strcpy(sv,strtok(dat,",")); strncpy(gp.sxjiku,sv,strlen(sv)-1); fgets(dat,sizeof dat,fin); strcpy(gp.slogx,strtok(dat,",")); gp.xmin=atof(strtok(NULL,",")); gp.xmax=atof(strtok(NULL,",")); if(strncmp(gp.slogx,"N",1)==0){ gp.dx=atof(strtok(NULL,",")); strcpy(sv,strtok(NULL,",")); strncpy(gp.sxfmt,sv,strlen(sv)-1); } fgets(dat,sizeof dat,fin); ndata=atoi(strtok(dat,","))-1; for(i=0;i<=ndata;i++){ fgets(dat,sizeof dat,fin); datax[i]=atof(strtok(dat,",")); } fclose(fin); /*x軸値ソート(大きい順)*/ for(i=0;i<=ndata;i++){ for(j=i+1;j<=ndata;j++){ if(datax[i]