#include #include #include #include #include #define MAX(x, y) (((x) > (y)) ? (x) : (y)) #define MIN(x, y) (((x) < (y)) ? (x) : (y)) typedef double SampleType; void Normalize(SampleType vMin, SampleType vMax) { SampleType MAXRANGE = MAX(fabs(vMin),fabs(vMax)); SampleType x, max=0,scale = MAXRANGE; int flag =0; while(scanf("%lf", &x)>0) { if(x == FLT_MIN || x == FLT_MAX) { int dummy; dummy=0; } else { if (x < 0) { x = -x; flag =1; } if (x > max) max = x; if(flag == 1) { x = -x; flag = 0; } } } fseek(stdin, 0, SEEK_SET); max = scale/max; while(scanf("%lf", &x)>0) { if(x != FLT_MIN && x != FLT_MAX) { x = x * max; printf("%lf\n", x); } } } void help(const char *sProgName) { printf( "Usage:\n%s %s ", _strupr((char *)sProgName) ," [-A] [-B]\n"); } int main(int argc,char **argv) { float vMax=1.0,vMin=-1.0; int i; for (i =1; i < argc; i++) { if (('-' == argv[i][0]) || ('/' == argv[i][0])) { char cp; cp = argv[i][1]; switch(cp) { case 'A': vMax = atof(&argv[i][2]); break; case 'B': vMin = atof(&argv[i][2]); break; case '?': case 'h': {help(argv[0]);return 1;} default: {help(argv[0]);return -1;} } } else {help(argv[0]);return -1;} } Normalize(vMin,vMax); return 0; }