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

problem z funkcją usuń

Ostatnio zmodyfikowano 2023-08-03 18:59
Autor Wiadomość
tybik843
Temat założony przez niniejszego użytkownika
problem z funkcją usuń
» 2023-08-02 23:51:55
Cześć mam problem pewną funkcją usuń potrzebuje pomocy oto treść
Funkcja usun usuwająca ze sznura nieprzedłużalne (przynajmniej 2-elementowe) ciągi elementów przechowujących wartości podzielne przez K (K jest liczbą całkowitą dodatnią będącą parametrem funkcji) wraz z elementem znajdującym się bezpośrednio po usuwanym ciągu (o ile taki istnieje). Pamieć zajmowana przez usuwane elementy ma zostać zwolniona

Oto mój kod
C/C++
void sznur::usun( int K )
{
   
Node * zaszuk = nullptr;
   
Node * szuk = pocz;
   
while( szuk != nullptr )
   
{
       
Node * koniec = szuk;
       
Node * poprzedni = szuk->nast;
       
int c = 1;
       
while( poprzedni != nullptr && koniec->dane % K == 0 )
       
{
           
c++;
           
koniec = poprzedni;
           
poprzedni = poprzedni->nast;
       
}
       
if( c > K )
       
{
           
Node * killer = szuk;
           
szuk = poprzedni;
           
if( zaszuk != nullptr )
           
{
               
zaszuk->nast = poprzedni;
           
}
           
else
           
{
               
pocz = poprzedni;
           
}
           
delete killer;
           
ileJest--;
       
}
       
else
       
{
           
zaszuk = koniec;
           
szuk = poprzedni;
       
}
    }
}
//10 10 10 9 9 9 8 8 6 5 4 3 2 2 1 1 K=2 -> 9 9 4 3 1
//6 6 6 3 2 1 1 K=3 -> 1 1
//10 10 9 8 8 8 7 6 6 5 4 4 K=2 -> pusty
problem pojawia sie przyostatnim sznure który powinien być pusty a nie jest bo wyświetlają sie 4 4 gdzie zrobiłem błąd w kodzie i jak go rozwiązać z góry dzięki za pomoc
P-180225
pekfos
» 2023-08-03 18:59:27
Nie zwalniasz całej pamięci, a warunek c > K nie wynika z treści zadania.
P-180226
« 1 »
  Strona 1 z 1