だから私はコードが正しいことを知っています
あなたが「知っている」ことは嘘です。コードは多くの点で間違っています。以下はほんの一例です:
for(unsigned int i=0;i<GPNO;i++) //SORTING ACCORDING TO FITNESS
for(unsigned int j=i+1;j<GPNO;j++)
if((gp[i]->fitness)>(gp[j]->fitness))
{
gp[i]->mycopy(tmp);
gp[j]->mycopy(gp[i]);
tmp->mycopy(gp[j]);
}
for(i=1;i<=no;i++)
{
gp[i]->mycopy(gp[GPNO-i]);
}
2 番目のfor
ループでi
は、宣言されていません。元のコンパイラは VC6 だったのではないかと思います。
もう 1 つの問題は、呼び出し方ですpow
。たとえば、次のように、マクロを使用して呼び出します (これは明らかに悪意のあるものです)。
pf[i].frq+=(unsigned int)pow(2,2*PF-1);
また、コンパイラは、どのバージョンをpow
念頭に置いていたのかを知りません。この目的のために悪であるマクロの好例。これを行う:
pf[i].frq+=(unsigned int)pow(2.0,2*PF-1);
または、いっそのこと、マクロを取り除きます。
コードが間違っている別の例:
#include "stdlib.h"
#include "conio.h"
#include "math.h"
これらのインクルードはどれも標準の一部ではありません。それらをコンパイルできる場合、それはコンパイラーがあなたの間違いを予期していたからです。しかし、それはまだ間違いです。