www.pudn.com > mat_lib.zip > ECON_PLT.C
#include#include #include #include #include #include #include #include "gr_lib.h" #include "mat_v2d.h" #define VECTOR 1 #define DATE 0 #define POINTS 1 #define MOVE_AVE 2 #define CUMUL_TOT 3 float time (char date[]); main() { unsigned rows,cols,i,j,k,toksize,move_ave,cumul_tot,loops,nostgs,no_pds; char xtitle[80],filename[30]; struct tmat *data,*headings,*date; struct fmat *dataf,*plot_data; float date_min,date_max,plot_max,plot_min,tic; string80 *ticstgs; printf("Please enter the name of the file to plot => "); scanf("%s",filename); printf("Please enter the number of periods to be summed => "); scanf("%d",&no_pds); mtcnt(filename,&rows,&cols,&toksize); move_ave = cols-1; cumul_tot = cols; tdim(data,rows,cols,toksize); tdim(headings,VECTOR,cols,toksize); fdim(dataf, rows-1, cols+1); fdim(plot_data,4,rows-1); mtget(filename,data); all(data,i,j) { if (i==0) { tck(headings,i,j,toksize); strcpy ( t(headings,i,j), ts(data,i,j,cols) ); } else { if (j==0) { fck(plot_data,DATE,i-1); f(plot_data,DATE,i-1) = (time( ts(data,i,j,cols) )/31536000)+1970; } else { fck(dataf,i-1,j-1); f(dataf,i-1,j-1) = tf(data,i,j,cols); } } } loops = no_cols(dataf)-3; j=1; do { mfmvac (dataf, no_pds, j, 0, no_rows(dataf)-1, move_ave); mfcumc (dataf,j,(no_rows(dataf)-no_pds),no_rows(dataf)-1, cumul_tot); rows(dataf,i) { fck(dataf,i,move_ave); f(dataf,i,move_ave)=f(dataf,i,move_ave)*no_pds; } cols(plot_data,k) { fck(plot_data,POINTS,k); fck(dataf,k,j); fck(plot_data,MOVE_AVE,k); fck(dataf,k,move_ave); fck(plot_data,CUMUL_TOT,k); fck(dataf,k,cumul_tot); f(plot_data,POINTS,k) = f(dataf,k,j); f(plot_data,MOVE_AVE,k) = f(dataf,k,move_ave); f(plot_data,CUMUL_TOT,k) = f(dataf,k,cumul_tot); } if(registerbgidriver(CGA_driver)<0) { puts("Cannot locate CGA_driver"); exit(0); } InitSEGraphics("a:\\"); SetCurrentWindow(2); SetAxesType(0,0); SelectColor(3); FindMinMax(&f(plot_data,DATE,0),no_cols(plot_data), &date_min,&date_max ); date_min=floor(date_min); FindMinMax(&f(plot_data,MOVE_AVE,0),no_cols(plot_data), &plot_min,&plot_max ); if (plot_min>0.0) plot_min=0.0; ScalePlotArea(date_min,plot_min,date_max,plot_max); SetXYIntercepts(date_min,plot_min); DrawXAxis(1,0); LabelXAxis(1,0); tic=(plot_max-plot_min)/10; DrawYAxis(tic,0); TitleXAxis("DATE"); LabelYAxis(1,0); BorderCurrentWindow(2); TitleWindow(t(headings,0,j)); DrawGrid(4); LinePlotData(&f(plot_data,DATE,no_pds), &f(plot_data,MOVE_AVE,no_pds), no_cols(plot_data)-no_pds, 3, 0); LinePlotData(&f(plot_data,DATE,no_cols(plot_data)-no_pds), &f(plot_data,CUMUL_TOT,no_cols(plot_data)-no_pds), no_pds, 3, 0); LinePlotData(&f(plot_data,DATE,0), &f(plot_data,POINTS,0), no_cols(plot_data), 3, 0); getch(); ClearWindow(); CloseSEGraphics(); } while (j++