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

Wyszukiwanie i usuwanie elementów listy

Object Storage Arubacloud
0 głosów
877 wizyt
pytanie zadane 6 stycznia 2016 w C i C++ przez martix3 Użytkownik (690 p.)
edycja 7 stycznia 2016 przez martix3

Witam! 

Mam do napisania program, który wyszukuje płyty DVD z bazy na podstawie tytułu,  oraz usuwa element na podstawie tytułu.

Pierwsza wyszukiwanie tytułu działa mi elegancko, ale  nie działa mi do końca funkcja, która usuwa, bo zamiast usunąć podany element to usuwa podany element oraz wszystkie elementy, które znajdują się przed nim, oprócz pierwszego. No i jest jeszcze problem jeśli podam pierwszy element listy, bo błąd wyskakuje. Muszę na początku postawić jakiś warunek, że jeśli podany element jest pierwszym do usuwamy pierwszy element. A tak przy okazji, żeby użyć funkcji pop_front() trzeba dodać jakąś specjalną bibliotekę?

Wstawiam strukturę, odpowiednie funkcje i ich wywołanie. Pomożecie mi poskładać to wszystko, żeby porządnie działało?

 

<span style="font-size:14px">struct dvd
{string tytul;
string rezyser;
string aktor1;
string aktor2;
string aktor3;
int rok;};
typedef struct element
    { struct dvd p;
    struct element *next;
    }Element;
    typedef Element *Lista;


 void wyswietl_element(Lista a)//funkcja wyświetla  wyszukane elementy listy
            {
            cout<<"tytul: "<<(a->p).tytul<<endl;
            cout<<"rezyser: "<<(a->p).rezyser<<endl;
            cout<<"aktorzy: "<<(a->p).aktor1<<endl;
            cout<<(a->p).aktor2<<endl;
            cout<<(a->p).aktor3<<endl;
            cout<<"rok wydania: "<<(a->p).rok<<endl;


            cout<<"\n";
        }



Lista wyszukaj_tytul(Lista *a,string tytul)//funkcja wyszukuje film na podstawie tytułu
{
       Lista pom;
       pom=(*a);
       while(pom != NULL && pom->p.tytul != tytul)
       pom=pom->next;
       return pom;

}
void usun_tytul(Lista *b,string tytul)
{      //daj oddzielny warunek, jeśli film jest 1. elementem
      if(*b==NULL)
      return;
   
      Lista t; 
      t=(*b)->next;
      do t=t->next; 
      while(t->p.tytul!=tytul); 
      (*b)->next=t->next;
      
      delete (t);
     
      return;
}



case 0:{Lista pom=NULL; //wyszukiwanie filmu za pomocą tytułu
        cout<<"Podaj tytul(bez znakow polskich):\n";
        getline(cin, linia); getline(cin, linia);
        z.tytul=linia;
        pom=wyszukaj_tytul(&b,z.tytul);
        if(pom==NULL)cout<<"\nPrzykro nam, ale nie mamy tego filmu w bazie.\n\n";
        else wyswietl_element(pom);
        break;}



  case 6:{if (logi=="administrator") //usuwanie elementu
             {Lista pom=NULL;
              cout<<"Podaj tytul(bez znakow polskich):\n";
              getline(cin, linia); getline(cin, linia);
              z.tytul=linia;
              pom=wyszukaj_tytul(&b,z.tytul);
              if(pom==NULL)
              {  cout<<"\nPrzykro nam, ale nie mamy w bazie tego filmu.\n";
                 break;
              }
                  usun_tytul(&b, z.tytul);
             }
                else 
                  cout<<"opcja dostepna tylko dla administratora";
                  break;}
</span>

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 808 wizyt
0 głosów
1 odpowiedź 330 wizyt
0 głosów
1 odpowiedź 2,949 wizyt
pytanie zadane 16 kwietnia 2023 w C# przez Whyyy Nowicjusz (240 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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!

...