📄 histg.c
字号:
/* Produce histegram from a given data file */
/* Y.Zheng, 5/9/90 */
#include <math.h>
#include <stdio.h>
#include <tinanew/tina.h>
/* Usage: histg inputfilename outputfilename */
/* N.B.: inputfilename is in the format suitable for gtool */
/* N.B.: outputfilename is formatted for gtool as well */
main(argc,argv)
int argc;
char *argv[];
{
FILE *fp,*fpp;
char ch[1024];
float y,x;
float *yy;
float ymax = -1000, ymin = 1000;
float width;
int n,N,i=0;
int group = 10, freq=0;
if ((fp=fopen(argv[1],"r"))==NULL)
printf("unable to find input data file\n");
fpp=fopen(argv[2],"w");
while(readline(fp,ch)!=EOF)
{
sscanf(ch,"%d %f",&n,&y);
if(y>ymax) ymax = y;
if(y<ymin) ymin = y;
i += 1;
}
fclose(fp);
N = i;
yy = (float *)ralloc(N*sizeof(float));
i=0;
fp=fopen(argv[1],"r");
while(readline(fp,ch)!=EOF)
{
sscanf(ch,"%d %f",&n,&y);
yy[i] = y;
i += 1;
}
width = (ymax - ymin)*1.01/group;
x = ymin-0.5*width;
fprintf(fpp,"%f %d\n",ymin-0.00001,freq);
while(x<ymax-0.5*width)
{
x += width;
for(i=0;i<N;i++)
{
if(yy[i] > x-width*0.5 && yy[i] < x+width*0.5)
freq += 1;
}
fprintf(fpp,"%f %d\n",x-0.5*width+0.00001,freq);
fprintf(fpp,"%f %d\n",x,freq);
fprintf(fpp,"%f %d\n",x+0.5*width-0.00001,freq);
freq = 0;
}
fprintf(fpp,"%f %d\n",x+0.5*width,freq);
fclose(fp);
fclose(fpp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -