Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

funkcja usunZDodatkiem problem c++

Ostatnio zmodyfikowano 2022-08-09 21:15
Autor Wiadomość
tybik843
Temat założony przez niniejszego użytkownika
funkcja usunZDodatkiem problem c++
» 2022-08-09 17:35:27
Cześć mam problem zgubiłem sie podczas pisania funkcji  usunZDodatkiem

void sznur::usunZDodatkiem() {
    Node*zaszuk=nullptr;
    Node*szuk=pocz;
    while(szuk!= nullptr && szuk->nast!= nullptr)
    {
        if(szuk->dane!=szuk->nast->dane)
        {
            zaszuk=szuk->nast;
            szuk=szuk->nast->nast;
            continue;
        }
        if(zaszuk==nullptr)
        {
            pocz=szuk->nast->nast;
            delete szuk->nast;
            delete szuk;
            szuk=pocz;
        }
        else
        {
            zaszuk->nast=szuk->nast->nast;
            delete szuk->nast;
            delete szuk;
            szuk=zaszuk->nast;
        }
        int war=szuk->dane;
        if(szuk->nast!= nullptr && szuk->nast->dane==war) {
            Node*killer=szuk;
            szuk=szuk->nast;
            if(zaszuk!= nullptr)
            {
                zaszuk->nast=killer->nast;
            }
            else
            {
                pocz=killer->nast;
            }
            delete killer;
            ileJest--;
        }
        else
        {
            zaszuk=szuk;
            szuk=szuk->nast;
        }
    }
}
//7 7 6 5 3 3 3 2 1 1 1 1 wynik 6 5 2 1
//9 9 9 6 6 6 5 5 sznur jest pusty
//5 5 5 5 4 4 4 2 1 wynik 5 4 2 1
Dla ostatniego sznura działa i proszę o pomoc i nakierowanie mnie gdzie popełniłem błąd proszę tylko o pomoc z rozwiązaniem poradzę sobie sam

oto zadanie:

funkcję usunZDodatkiem rozpatrującą rozłączne pary elementów sznura i usuwającą całą parę
jeśli zawiera równe wartości. Dodatkowo, jeżeli element następujący bezpośrednio po usuniętej
parze zawiera tę samą wartość co usuwane, to też jest usuwany (usuwamy jeden dodatkowy
element; w tym przypadku nie jest on uwzględniany w kolejnej parze). Pary wybierane są tak, że
pierwszy element sznura jest początkowym elementem pierwszej pary. Funkcja nie może używać
tablic, pomocniczych sznurów ani struktur danych dostępnych w bibliotece standardowej
(wektorów, list, kolejek, itp);

Poprawiłem kod teraz jest moje pytanie czy jest wszystko ok treść zadania taka sama
void sznur::usunZDodatkiem() {
    Node*zaszuk=nullptr;
    Node*szuk=pocz;
    while(szuk!= nullptr && szuk->nast!= nullptr)
    {
        if(szuk->dane!=szuk->nast->dane)
        {
           zaszuk=szuk->nast;
           szuk=szuk->nast->nast;
           continue;
        }
        int war=szuk->dane;
        if (zaszuk == nullptr) {
            pocz = szuk->nast->nast;
            delete szuk->nast;
            delete szuk;
            szuk = pocz;
        } else {
            zaszuk->nast = szuk->nast->nast;
            delete szuk->nast;
            delete szuk;
            szuk = zaszuk->nast;
        }
        if(szuk!= nullptr && szuk->dane==war) {
                if (zaszuk == nullptr) {
                    pocz = szuk->nast;
                    delete szuk;
                    szuk = pocz;
                } else {
                    zaszuk->nast = szuk->nast;
                    delete szuk;
                    szuk = zaszuk->nast;
                }
        }
    }
}
P-179595
DejaVu
» 2022-08-09 21:15:31
Polecam poczytać Ci jak używać debuggera. Jak się nauczysz jego używać to prędzej czy później będziesz potrafił samodzielnie wyszukiwać błędy w kodzie.

https://cpp0x.pl/kursy/Kurs-C++/Poziom-X/Debugowanie-na-przykladzie-Visual-Studio-2017/586

Jeżeli masz C++ do dyspozycji to lepiej użyj std::list zamiast implementować własną listę, w której mogłeś zrobić błędy.
P-179596
« 1 »
  Strona 1 z 1