Witam, problem polega na tym że przy dodawaniu nowej książki, przy wpisywaniu tytułu program działa gdy wpisuje się jedno słowo, natomiast kiedy chcę wpisać więcej program wpisuje drugie słowo jako następną daną. W którym miejscu w kodzie muszę umieścić funkcję getline aby wpisywany tekst był przypisywany tylko do tytułu a nie do imienia również.
// 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;
}