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++