struct chromosom
{
int numer;
chromosom * pNext;
};
struct osobnik
{
double f;
chromosom * glowa;
osobnik * pNext;
};
void dopasowanie(osobnik*&pierwszy, double w, double r)
{
int f=0;
double q = 0;
chromosom* usun = nullptr;
osobnik* element = pierwszy;
osobnik* poprzedni = pierwszy;
while (element)
{
if (element->f == -1)
{
f = 0;
chromosom*wsk = element->glowa;
while (wsk)
{
f = f + wsk->numer;
wsk = wsk->pNext;
}
cout << "#" << endl;
q = f = (f % 100);
q = q / 100;
cout << q << endl;
element->f = q;
if (element->f < w)
{
pierwszy = pierwszy->pNext;
while (element->glowa)
{
usun = element->glowa;
delete element->glowa; //tutaj Element ConsoleApplication2.exe wyzwolił punkt przerwania.: wystąpił wyjątek
element->glowa = usun;
}
delete element;
}
if (element -> f > r)
{
chromosom* glowa = nullptr;
chromosom* aktualny = glowa;
usun = element->glowa;
cout << "$" << endl;
while (usun)
{
aktualny = new chromosom{ usun->numer,nullptr };
aktualny = aktualny->pNext;
usun = usun->pNext;
}
pierwszy = new osobnik{q, glowa, pierwszy };
}
}
element = element->pNext;
}
}
Mam problem, mianowicie wywala mi wyjątek. Funkcja dopasowanie ma na nadanie nadać strukturze osobnik losową wartość f po czym dla f<w usunąć osobnika i przypisaną do niego listę chromosomów, a dla f>r sklonować osobnika.