📄 utility.c
字号:
//一些不重要的函数
/*-------------------------------------------------------------------*/
/* utility.c - utility routines, contains copyright, repchar, skip */
/*-------------------------------------------------------------------*/
#include "external.h"
void copyright()
{
void repchar(), skip();
int iskip;
int ll = 59;
iskip = (LINELENGTH - ll)/2;
skip(outfp,1);
repchar(outfp," ",iskip);
repchar(outfp,"-",ll);
skip(outfp,1);
repchar(outfp," ",iskip);
fprintf(outfp,"| SGA-C (v1.1) - A Simple Genetic Algorithm |\n");
repchar(outfp," ",iskip);
fprintf(outfp,"| (c) David E. Goldberg 1986, All Rights Reserved |\n");
repchar(outfp," ",iskip);
fprintf(outfp,"| C version by Robert E. Smith, U. of Alabama |\n");
repchar(outfp," ",iskip);
fprintf(outfp,"| v1.1 modifications by Jeff Earickson, Boeing Company |\n");
repchar(outfp," ",iskip);
repchar(outfp,"-",ll);
skip(outfp,2);
}
void repchar (outfp,ch,repcount) /* Repeatedly write a character to stdout */
FILE *outfp;
char *ch;
int repcount;
{
int j;
for (j = 1; j <= repcount; j++)
fprintf(outfp,"%s",ch);
}
void skip(outfp,skipcount) /* Skip skipcount lines */
FILE *outfp;
int skipcount;
{
int j;
for (j = 1; j <= skipcount; j++)
fprintf(outfp,"\n");
}
/* interpret bits i thru j of a individual as an integer */
/* j MUST BE greater than or equal to i AND j-i < UINTSIZE-1 */
/* from is a chromosome, represented as an array of unsigneds */
int ithruj2int(i,j,from)
int i,j;
unsigned *from;
{
unsigned mask, temp;
int bound_flag;
int iisin, jisin;
int i1, j1, out;
if(j < i)
{
fprintf(stderr,"Error in ithruj2int: j < i\n");
exit(-1);
}
if(j-i+1 > UINTSIZE)
{
fprintf(stderr,"Error in ithruj2int: j-i+1 > UINTSIZE\n");
exit(-1);
}
iisin = i/UINTSIZE;
jisin = j/UINTSIZE;
i1 = i - (iisin*UINTSIZE);
j1 = j - (jisin*UINTSIZE);
if(i1 == 0)
{
iisin = iisin-1;
i1 = i - (iisin*UINTSIZE);
};
if(j1 == 0)
{
jisin = jisin-1;
j1 = j - (jisin*UINTSIZE);
};
/* check if bits fall across a word boundary */
if(iisin == jisin)
bound_flag = 0;
else
bound_flag = 1;
if(bound_flag == 0)
{
mask = 1;
mask = (mask<<(j1-i1+1))-1;
mask = mask<<(i1-1);
out = (from[iisin]&mask)>>(i1-1);
return(out);
}
else
{
mask = 1;
mask = (mask<<j1)-1;
temp = from[jisin]&mask;
mask = 1;
mask = (mask<<(UINTSIZE-i1+1))-1;
mask = mask<<(i1-1);
out = ((from[iisin]&mask)>>(i1-1)) | (temp<<(UINTSIZE-i1+1));
return(out);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -