Cześć mam problem z funkcją poniżej
Oto treść:
"funkcję usun rozpatrującą rozłączne czwórki elementów sznura i usuwającą całą czwórkę jeśli jej
trzeci element jest podzielny przez pierwsze dwa, albo tylko ostatni element czwórki w
przeciwnym przypadku. W przypadku sznura o długości nie podzielnej przez 4 końcowe elementy
(nie wchodzące w skład żadnej czwórki – czwórki wybierane są tak, że pierwszy element sznura
jest początkowym elementem pierwszej czwórki) nie są modyfikowane. Funkcja nie może używać
tablic, pomocniczych sznurów ani struktur danych dostępnych w bibliotece standardowej
(wektorów, list, kolejek, itp);"
Mój kod:
void sznur::usun()
{
Node*zaszuk=nullptr;
Node*a=pocz;
while(a!=nullptr && a->nast!=nullptr && a->nast->nast!=nullptr && a->nast->nast->nast->nast!=nullptr)
{
Node*jeden=a;
Node*dwa=a->nast;
Node*trzy=a->nast->nast;
Node*cztery=a->nast->nast->nast;
if(trzy->dane%jeden->dane==0 && trzy->dane%dwa->dane==0)
{
if(zaszuk!=nullptr)
{
zaszuk->nast=cztery->nast;
}
else
{
pocz=cztery->nast;
}
delete jeden;
delete dwa;
delete trzy;
delete cztery;
ileJest=ileJest-4;
if(zaszuk==nullptr)
{
a=pocz;
}
else
{
a=zaszuk->nast;
}
}
else
{
trzy->nast=cztery->nast;
delete cztery;
ileJest--;
zaszuk=dwa;
a=zaszuk->nast;
}
}
}
Problem polega na tym iż "w sznurze 2,3,6,7,8,8,8,9,9,10,90,100 stanie się pusty" nie dokońca jest pusty zostaną wyrzucone 9,10,90,100 te wartości końcowe sprawdzając debuggerem funkcja działa ok ale po jakim czasie jak wskaże na "if(zaszuk==nullptr)" odrazu przeskakuje do main do wypisywania wartości a przecież 90 dzieli się nie 9 i 90 dzieli się na 10 proszę o podpowiedź gdzie robię błąd