Witam problem polega na tym że kiedy dodaję nową książkę, aby program działał poprawnie muszę wpisać tylko 1 słowo, ponieważ kiedy wpiszę 2 program omija opcje i przechodzi do kolejnej. Jak to naprawić?
// dodawanie, usuwanie oraz wyswietlanie utowrzonych przez nas ksiazek
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
struct book // towrzenie pojedynczej struktury book
{
string tytul; // wypisanie wszystkich potrzebnych danych
string imie;
string nazwisko;
int dzien,miesiac,rok,ilosc_stron;
book *nastepny; // tworzenie wskaznika na nastepny element listy
book() // konstruktor ktory wywolamy przy tworzeniu obiektu
{
// wczytujemy potrzebne dane
cout << "Podaj Tytul Ksiazki: ";cin>>tytul;
cout << "Podaj Imie Autora: ";cin>>imie;
cout << "Podaj Nazwisko Autora: ";cin>>nazwisko;
cout << "\n";
cout << "Data Wydania ( DD/MM/RRRR) oraz ilosc stron:\n";
cout << "\n";
cout << "Podaj Dzien: "; cin>>dzien;
cout << "Podaj Miesiac: "; cin>>miesiac;
cout << "Podaj Rok: "; cin>>rok;
cout << "Podaj ilosc stron: "; cin>>ilosc_stron;
cout << "\n";
// ustawiamy wskaznik na NULL
nastepny=NULL;
}
void pokaz() // funckja wyswietlajaca ksiazke
{
cout<<"Tytul: "<<tytul<<"\nAutor: "<<imie<<" "<<nazwisko<<"\nData Wydania: "<<dzien<<"."<<miesiac<<"."<<rok<<"\nStron: "<<ilosc_stron<<"\n"; // nr indeksu 241839.
}
};
void dodaj_ksiazke(book **wskaznik)
{
book *nowa=new book; // utworzenie nowej ksiazki
book *pomoc = (*wskaznik), *pomoc1 = NULL; // wskazniki ulatwiajace okreslenie poczatku listy
if ((*wskaznik) == NULL) // nowa ksiazka bedzie wskaznikiem listy
{
nowa->nastepny = (*wskaznik);
(*wskaznik) = nowa;
}
else // ustawiamy wskaznik na poczatek lub srodek listy
{
pomoc1->nastepny = nowa;
nowa->nastepny = pomoc;
}
}
void wyswietl(book *wskaznik) // wyswietlanie wszystkich ksiazek
{
cout<<"Dostepne w Bibliotece: \n";
while (wskaznik != NULL) // jezeli wskaznik ksiazek jest rozny od zera wyswietli nasze ksiazki
{
wskaznik->pokaz(); // wyswietlenie listy
wskaznik=wskaznik->nastepny; // wyswietlanie kolejnych elementow
}
}
bool usun_ksiazke(book **wskaznik, string) // usuniecie wybranej ksiazki
{
book *pomoc = (*wskaznik), *pomoc1 = NULL;
if (pomoc == NULL) // jezeli lista jest pusta
return false;
else if (pomoc == (*wskaznik)) // w przeciwnym wypadku usuwamy koniec
{
(*wskaznik) = (*wskaznik)->nastepny;
delete pomoc;
}
else // usuwamy element ze srodka lub konca listy
{
pomoc1->nastepny = pomoc->nastepny;
delete pomoc;
}
return true;
}
int main()
{
book *wskaznik=NULL; // *wskaznik jest wskaznikiem na pierwszy element
int opcja;
string tytul;
for(;;) // wywolanie nieskonczonej petli do wyswietlania menu
{
// wyswietlanie menu naszej bliblioteki
cout << " Biblioteka\n";
cout << "1) Dodaj Ksiazke.\n";
cout << "2) Usun Ksiazke.\n";
cout << "3) Wyswietl Wszystkie Ksiazki.\n";
cout << "4) Wyjscie.\n";
cout << "\n";
cout << "Opcja: "; cin>>opcja;
// funkcja pozwalajaca wybierac opcje pod ktorymi sa nasze wczesniej stworzone funkcje
switch (opcja)
{
case 1:
dodaj_ksiazke(&wskaznik);
break;
case 2:
cout << "Podaj tytul ksiazki: ";cin>>tytul;
if (!usun_ksiazke(&wskaznik, tytul)) // podajemy tytul ksiazki ktora chcemy usunac
cout << "Nie odnaleziono podanej ksiazki\n";
else
cout << "Ksiazka zostala usunieta\n";
break;
case 3:
wyswietl(wskaznik);
break;
case 4:
exit(0);
default:
cout << "Wybierz Opcje 1,2,3 lub 4";
cout << "\n \n";
}
}
return 0;
}