# HG changeset patch # User pouya@nohup.io # Date 1639999698 -3600 # Mon Dec 20 12:28:18 2021 +0100 # Node ID 68d622772415684128d1b2d8ccad4b770224c55a # Parent 0000000000000000000000000000000000000000 initial commit diff --git a/Makefile b/Makefile new file mode 100644 --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +CC=pcc +LD=pcc + +CCFLAGS=-O +LDFLAGS=-static + +TARG=nstats +OFILES=main.o + +all: ${TARG} + +clean: + rm -f *.o ${TARG} + +.SUFFIXES: .c .o + +.c.o: + ${CC} ${CCFLAGS} -c ${.IMPSRC} -o ${.TARGET} + +${TARG}: ${OFILES} + ${LD} ${LDFLAGS} ${.ALLSRC} -o ${.TARGET} + +.PHONY: all clean diff --git a/dat.h b/dat.h new file mode 100644 --- /dev/null +++ b/dat.h @@ -0,0 +1,1 @@ +#define nil (void *)0 diff --git a/fns.h b/fns.h new file mode 100644 diff --git a/main.c b/main.c new file mode 100644 --- /dev/null +++ b/main.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +#include "dat.h" +#include "fns.h" + +#ifndef BUFLEN +#define BUFLEN 1024 +#endif + +int +main() { + int i, ib, eof; + char bufc[BUFLEN], *b; + float f, min, max, mean; + + min = 1.0/0.0; + max = -1.0/0.0; + mean = 0.0; + + i = eof = 0; + while(!eof) { + ib = 0; + b = bufc; + while(++ib < (sizeof bufc)/(sizeof bufc[0])) switch(*b++ = getchar()) { + case EOF: + eof = 1; + case '\n': + case '\r': + case '\t': + case ' ': + b--; + ib--; + goto eofield; + default: + break; + } +eofield: + if(ib) { + *b = 0; + f = atof(bufc); /* sizeof bufc must be > 1 */ + if(f < min) min = f; + if(f > max) max = f; + mean = (mean*i+f)/(++i); + } + } + + printf("min: %g\nmax: %g\nmean: %g\n", min, max, mean); + return 0; +}