• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem z funckją usun(czworki)

Object Storage Arubacloud
0 głosów
145 wizyt
pytanie zadane 6 marca 2023 w C i C++ przez martinez369 Początkujący (460 p.)
zamknięte 23 kwietnia 2023 przez martinez369

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

komentarz zamknięcia: najlepsza

1 odpowiedź

0 głosów
odpowiedź 6 marca 2023 przez tangarr Mędrzec (154,780 p.)
wybrane 23 kwietnia 2023 przez martinez369
 
Najlepsza

Spójrz jeszcze raz na warunek pętli

a!=nullptr && // pierwszy element
a->nast!=nullptr &&  // drugi element
a->nast->nast!=nullptr && // trzeci element
a->nast->nast->nast->nast!=nullptr // piąty element !!!

Ostatnia czwórka nie jest przetwarzana

komentarz 6 marca 2023 przez martinez369 Początkujący (460 p.)
Jak to zrobić żeby ostatnia czwórka powinna być przetwarzana??bo nie mam na to pomysłu
1
komentarz 6 marca 2023 przez tangarr Mędrzec (154,780 p.)
Dlaczego sprawdzasz piąty element?
komentarz 7 marca 2023 przez martinez369 Początkujący (460 p.)
dzięki za wyjasnienie problemu nie zauważyłem w pętli while że sprawdzam o jeden element za dużo

Podobne pytania

0 głosów
1 odpowiedź 263 wizyt
pytanie zadane 27 lutego 2023 w C i C++ przez martinez369 Początkujący (460 p.)
0 głosów
0 odpowiedzi 103 wizyt
pytanie zadane 1 maja 2023 w C i C++ przez martinez369 Początkujący (460 p.)
0 głosów
0 odpowiedzi 207 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...