#include
#include
#include
#define MAXV 1.0
void normalize_value(double maxv,int valn,int linen,double datas[256][25]);
int main(int argc,char* argv[])
{
int i,ii,valn,linen,temp;
double datas[256][25];
FILE *fp;
char fbuf[255];
char seps[]=" ",*token;
if(argc <= 1){
printf("usage:%s datafile\n",argv[0]);
return 0;
} else {
fp = fopen(argv[1],"r");
}
memset(datas,0,sizeof(double)*(25*256));
linen = 0;
while(fgets(fbuf,255,fp)){
valn=0;
token = strtok( fbuf, seps );
while( token != NULL ){
sscanf(token,"%d",&temp);
datas[linen][valn++] = temp;
token = strtok( NULL, seps );
}
linen ++;
}
normalize_value(MAXV,valn,linen,datas);
for(i=0;i<linen;i++){
printf("%d ",i+1);
for(ii=0;ii<valn;ii++){
printf("%lf ",datas[i][ii]);
}
printf("\n");
}
}
void normalize_value(double maxv,int valn,int linen,double datas[256][25])
{
int i,ii;
double max[25],min[25];
for(ii=0;ii<25;ii++){
max[ii] = -1e32; min[ii] = 1e32;
}
for(i=0;i<linen;i++){
for(ii=0;ii<valn;ii++){
if(datas[i][ii] - max[ii] > 0) max[ii] = datas[i][ii];
if(datas[i][ii] - min[ii] < 0) min[ii] = datas[i][ii];
}
}
for(i=0;i<linen;i++){
for(ii=0;ii<valn;ii++){
datas[i][ii] = (maxv)*(datas[i][ii]-min[ii]) /
fabs(max[ii]-min[ii]);
}
}
}
|