trybikwe34 Napisano Sierpień 2, 2023 Zgłoś Udostępnij Napisano Sierpień 2, 2023 Cześć mam problem z zadaniem treść przesyłam w postaci zdjęcia a mój kod wygląda tak void sznur::usun(int K) { Node*zaszuk=nullptr; Node*a=pocz; while(a!=nullptr && a->nast!=nullptr && a->nast->nast!=nullptr) { Node*jeden=a; Node*dwa=a->nast; Node*trzy=a->nast->nast; if(jeden->dane==dwa->dane && dwa->dane==trzy->dane) { if(zaszuk!=nullptr) { zaszuk->nast=trzy->nast; } else { pocz=trzy->nast; } if(zaszuk!=nullptr) { a=zaszuk->nast; } else { a=pocz; } delete jeden; delete dwa; delete trzy; ileJest=ileJest-3; } else if(dwa->dane<=K) { if(zaszuk!=nullptr) { zaszuk->nast=trzy; } else { pocz=trzy; } if(zaszuk!=nullptr) { a=zaszuk->nast; } else { a=pocz; } delete jeden; delete dwa; delete trzy; ileJest=ileJest-3; } else { zaszuk=trzy; a=zaszuk->nast; } } } //7 7 6 3 3 3 2 1 1 1 1 1 -> 7 7 6 1 //9 9 9 6 6 6 4 -> pusty //9 7 6 5 5 5 3 2 1 -> 9 7 6 3 2 1 problem polega na tym iż dla drugieo sznura powinien byc pusty ale wyświetla 4 na końcu nie wiem jak zrobić żeby tej 4 nie było nie mam pomysłu na to proszę o pomoc gdzie robię błąd w kodzie z góry dzięki Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
learn code with me Napisano Wrzesień 9, 2023 Zgłoś Udostępnij Napisano Wrzesień 9, 2023 Wydaje się, że usuwasz węzły bez odpowiedniego zaktualizowania wskaźników nast dla sąsiednich węzłów. Warunek dla dwa->dane <= K - usuwasz trzy węzły (jeden, dwa, trzy) gdy usuwasz trzy identyczne węzły i gdy dwa->dane <= K) aktualizujesz zaszuk i a w ten sam sposób, może być mylące i prowadzić do błędów usuń trzy węzły tylko wtedy, gdy są one identyczne usuń tylko dwa węzły, gdy dwa->dane <= K aktualizuj ileJest odpowiednio dla obu przypadków void sznur::usun(int K) { Node *zaszuk = nullptr; Node *a = pocz; while (a != nullptr && a->nast != nullptr && a->nast->nast != nullptr) { Node *jeden = a; Node *dwa = a->nast; Node *trzy = a->nast->nast; if (jeden->dane == dwa->dane && dwa->dane == trzy->dane) { if (zaszuk != nullptr) { zaszuk->nast = trzy->nast; } else { pocz = trzy->nast; } delete jeden; delete dwa; delete trzy; ileJest -= 3; a = (zaszuk != nullptr) ? zaszuk->nast : pocz; } else if (dwa->dane <= K) { if (zaszuk != nullptr) { zaszuk->nast = trzy; } else { pocz = trzy; } delete jeden; delete dwa; ileJest -= 2; a = (zaszuk != nullptr) ? zaszuk->nast : pocz; } else { zaszuk = trzy; a = trzy->nast; } } } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.