⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prplot.c

📁 su 的源代码库
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       *//* PRPLOT: $Revision: 1.9 $ ; $Date: 2003/08/19 21:24:44 $	*/#include "par.h"/*********************** self documentation **********************/char *sdoc[] = {" 									"," PRPLOT - PRinter PLOT of 1-D arrays f(x1) from a 2-D function f(x1,x2)"," 									"," prplot <infile >outfile [optional parameters]				"," 									"," Optional Parameters:							"," n1=all                 number of samples in 1st dimension		"," d1=1.0                 sampling interval in 1st dimension		"," f1=d1                  first sample in 1st dimension			"," n2=all                 number of samples in 2nd dimension		"," d2=1.0                 sampling interval in 2nd dimension		"," f2=d2                  first sample in 2nd dimension			"," label2=Trace           label for 2nd dimension			"," 									",NULL};/**************** end self doc ********************************//* * AUTHOR:  Dave Hale, Colorado School of Mines, 07/07/89 */static void prp1d (FILE *fp, char *label, int n, float d, float f, float x[]);intmain (int argc, char **argv){	int n1,n2,i2;	float f1,f2,d1,d2,*x;	char *label2="Trace",label[256];	FILE *infp=stdin,*outfp=stdout;	/* hook up getpar to handle the parameters */	initargs(argc,argv);	requestdoc(0);	/* get optional parameters */	if (!getparint("n1",&n1)) {		if (efseeko(infp,(off_t) 0,SEEK_END)==-1)			err("input file size is unknown; specify n1!\n");		if ((n1=((int) (eftello(infp)/((off_t) sizeof(float)))))<=0)			err("input file size is unknown; specify n1!\n");		efseeko(infp,(off_t) 0,SEEK_SET);	}	if (!getparfloat("d1",&d1)) d1 = 1.0;	if (!getparfloat("f1",&f1)) f1 = d1;	if (!getparint("n2",&n2)) n2 = -1;	if (!getparfloat("d2",&d2)) d2 = 1.0;	if (!getparfloat("f2",&f2)) f2 = d2;	getparstring("label2",&label2);	/* allocate space */	x = ealloc1float(n1);	/* loop over 2nd dimension */	for (i2=0; i2<n2 || n2<0; i2++) {		/* read input array, watching for end of file */		if (efread(x,sizeof(float),n1,infp)!=n1) break;					/* make plot label */		sprintf(label,"%s %0.4g",label2,f2+i2*d2);		/* plot the array */		prp1d(outfp,label,n1,d1,f1,x);	}		return(CWP_Exit());}#define IFC 0#define ILC 54static void prp1d (FILE *fp, char *label, int n, float d, float f, float x[]){	int i,ibase,icx,ic;	float xmin,xmax,xscale,xbase;	/* print title */	fprintf(fp,"\n");	fprintf(fp,"%s\n",label);	/* minimum and maximum x */	xmin = x[0];	xmax = x[0];	for (i=1; i<n; i++) {		xmin = MIN(xmin,x[i]);		xmax = MAX(xmax,x[i]);	}	fprintf(fp,"minimum = %g\n",xmin);	fprintf(fp,"maximum = %g\n",xmax);	/* determine scale factors and shifts for converting x values to *s */	if (xmin==xmax)		xscale = 1.0;	else		xscale = (ILC-IFC)/(xmax-xmin);	if (xmin<0.0 && xmax<0.0) {		ibase = ILC;		xbase = xmax;	} else if (xmin<0.0 && xmax>=0.0) {		ibase = IFC+(0.0-xmin)*xscale;		xbase = 0.0;	} else {		ibase = IFC;		xbase = xmin;	}	/* loop over x values */	for (i=0; i<n; i++) {		/* determine column corresponding to x value */		icx = ibase+NINT((x[i]-xbase)*xscale);		icx = MAX(IFC,MIN(ILC,icx));		/* print the index, x value, and row of *s */		fprintf(fp,"%10.3e %13.6e ",f+i*d,x[i]);		for (ic=IFC; ic<MIN(ibase,icx); ic++)			fprintf(fp," ");		for (ic=MIN(ibase,icx); ic<=MAX(ibase,icx); ic++)			fprintf(fp,"*");		fprintf(fp,"\n");	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -