Błąd przy wczytywaniu pliku txt do programu w C++


(Zelezikgim) #1

Witam,

mam pewien problem ponieważ, mam napisany program na zaliczenie ale jedyną jego wadą jest to że nie mogę wczytać z powrotem tego co zapisałem do pliku txt. Pojedyncze słowa chce wczytywać ale problem zaczyna się gdy chce aby wczytał ciąg słów z białymi znakami np. Ala_ma_kota czyta bez problemu natomiast przy Ala ma kota program pada.

 

Wszystkie funkcje działają prawidłowo oprócz funkcji wczytaj.

 

Poniżej wstawiam cały kod:

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <iomanip>

using namespace std;
int liczba_ksiazek;
char tytul[50];
char autor[50];
int rok;
struct baza
{
    string tytul;
    string autor;
    int rokwydania;
    string kategoria;
    int liczbasztuk;
    int liczwypo;
    string datazwrotu;
    int liczbastron;
};

baza dane[500];
void Dodaj();
void Zapisz();
void Modyfikacja();
void Baza();
void Usun();
int Menu();
void Wczytaj();
void typ_ksiazki();
void Wyszukiwanie(baza dane[500]);
void wpisz_rok();
int main()
{
    char poczatkowy_wybor;

        system("cls");
        cout<<" ******************************************************************************"<<endl;
        cout<<"* Biblioteka *"<<endl;
        cout<<" ******************************************************************************"<<endl;
        cout<<"* *"<<endl;
        cout<<"* |1| Jest to moja kolejna wizyta *"<<endl;
        cout<<"* *"<<endl;
        cout<<"* |2| Uzywam programu pierwszy raz *"<<endl;
        cout<<"* *"<<endl;
        cout<<" ******************************************************************************"<<endl;
        cout<<" Wybierz poprzez nacisniecie klawisza";
        poczatkowy_wybor=getch();
        switch(poczatkowy_wybor)
        {
            case '1':
            {
                Wczytaj();
                Menu();
                break;
            }
            case '2':
            {
                Menu();
                break;
            }
        }

    return 0;
}
void Wczytaj()
{
    ifstream plik("spisksiazek.txt",ios::in);
    plik>>liczba_ksiazek;
    if(plik.good()==false)
    {
        cout<<endl<<endl;
        cout<<" Wczytywanie danych nie powiodlo sie!"<<endl<<endl;
        cout<<" Brak pliku: spisksiazek.txt na dysku!"<<endl<<endl;
        cout<<" Dzialanie programu zostalo przerwane! "<<endl<<endl;
        getch();
        exit(0);
        cout<<endl;
    }
    else
    {
        int j=0;
        do
        {
            plik>>dane[j].tytul;
            plik>>dane[j].autor;
            plik>>dane[j].rokwydania;
            plik>>dane[j].kategoria;
            plik>>dane[j].liczbasztuk;
            plik>>dane[j].liczwypo;
            plik>>dane[j].liczbastron;
            plik>>dane[j].datazwrotu;
            j++;
        }while( !plik.eof() );
        plik.close();

        cout<<endl<<endl;
        cout<<" Dane zostaly wczytane, nacisnij ENTER!";
        getchar();
    }
}
void Dodaj()
{
    typ_ksiazki();
    cout<<dane[liczba_ksiazek].kategoria;
    cout<<endl<<endl;
    cout<<" Wpisz tytul ksiazki : ";
    cin.getline( tytul, 50 );
    dane[liczba_ksiazek].tytul=tytul;
    cout<<endl;
    cout<<" Wpisz autora ksiazki : ";
    cin.getline( autor, 50 );
    dane[liczba_ksiazek].autor=autor;
    cout<<endl;
    cout<<" Wpisz rok wydania ksiazki : ";
    wpisz_rok();
    cout<<endl;
    cout<<" Wpisz liczbe sztuk : ";
    cin>>dane[liczba_ksiazek].liczbasztuk;
    cout<<endl;
    cout<<" Wpisz liczbe stron : ";
    cin>>dane[liczba_ksiazek].liczbastron;
    cout<<endl;
    cout<<" Wpisz liczbe wyporzyczonych : ";
    cin>>dane[liczba_ksiazek].liczwypo;
    cout<<endl;
    if(dane[liczba_ksiazek].liczwypo!=0)
    {
    cout<<" Wpisz date zwrotu : ";
        cin>>dane[liczba_ksiazek].datazwrotu;
        cout<<endl;
    }
    else
    {
    dane[liczba_ksiazek].datazwrotu="brak";
    }
    cout<<"*--------------------------------------------------*"<<endl<<endl;
    liczba_ksiazek++;
    cin.ignore();
    cout<<" Dodano ksiazke do katalogu, nacisnij ENTER!";
    getchar();
}
void Zapisz()
{
    ofstream plik("spisksiazek.txt",ios::trunc);
    plik<<liczba_ksiazek<<"\n";
    for(int j=0;j<liczba_ksiazek;j++)
    {
        plik<<dane[j].tytul<<endl;
        plik<<dane[j].autor<<endl;
        plik<<dane[j].rokwydania<<endl;
        plik<<dane[j].kategoria<<endl;
        plik<<dane[j].liczbasztuk<<endl;
        plik<<dane[j].liczwypo<<endl;
        plik<<dane[j].liczbastron<<endl;
        plik<<dane[j].datazwrotu<<endl;
    }
    plik.close();
    cout<<endl;
    cout<<" Dane zostaly zapisane, nacisnij ENTER!";
    getchar();
}
void Baza()
{
    int j;
    if(liczba_ksiazek!=0)
    {
        cout<<"\n\n";
        for(j=0;j<liczba_ksiazek;j++)
        {
            cout<<" Nr katalogowy: "<<j<<endl;
            cout<<"*-----------------------------------------------*"<<endl;
            cout<<"Tytul ksiazki : "<<dane[j].tytul<<endl;
            cout<<"Autor ksiazki : "<<dane[j].autor<<endl;
            cout<<"Rok wydania : "<<dane[j].rokwydania<<endl;
            cout<<"Kategoria : "<<dane[j].kategoria<<endl;
            cout<<"Liczba sztuk : "<<dane[j].liczbasztuk<<endl;
            cout<<"Liczba wyporzyczonych : "<<dane[j].liczwypo<<endl;
            cout<<"Liczba stron : "<<dane[j].liczbastron<<endl;
            cout<<"Data zwrotu : "<<dane[j].datazwrotu<<endl;
            cout<<"*-----------------------------------------------*"<<endl<<endl;
        }
        cout<<" Aby wrocic do menu nacisnij ENTER!";
        getchar();
    }
    else
    {
        cout<<endl;
        cout<<" Katalog jest pusty, nacisnij ENTER!";
        getchar();
    }
}
void Modyfikacja()
{
    int nr;
    if(liczba_ksiazek!=0)
    {
        cout<<endl;
        cout<<" W katalogu znajduja sie ksiazki o nr od 0 do "<<liczba_ksiazek-1<<endl;
        cout<<" Podaj numer katalogowy ksiazki i nacisnij ENTER: ";
        cin>>nr;
        cin.ignore();
        if(cin.good()==1)
        {
            if(nr>liczba_ksiazek)
            {
                cout<<endl;
                cout<<" W katalogu nie istnieje ksiazka o numerze "<<nr<<", nacisnij ENTER!";
                getchar();
            }
            else
            {
                system("CLS");
        cout<<" ***********************************************************************************"<<endl;
        cout<<" ***************************MENU Modyfikacji****************************"<<endl;
        cout<<" ***********************************************************************************"<<endl;
        cout<<" ***********************************************************************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|1| Tytul****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|2| Autor****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|3| Kategoria****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|4| Rok wydania****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|5| Ilosc wyporzyczonych****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|6| Liczba stron****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|7| Liczba sztuk****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|8| Data zwrotu****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************|0| MENU****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***********************************************************************************"<<endl;
                cout << "---------------------------------------------"<<endl;
                cout << " Tytul ksiazki: " <<dane[nr].tytul << endl;
                cout << " Autor ksiazki: " <<dane[nr].autor << endl;
                cout << " Kategoria ksiazki " <<dane[nr].kategoria << endl;
                cout << " Rok wydania: " <<dane[nr].rokwydania<<endl;
                cout << " Liczba wyporzyczonych ksiazek: " <<dane[nr].liczwypo << endl;
                cout << " Liczba stron: " <<dane[nr].liczbastron << endl;
                cout << " liczba sztuk: " <<dane[nr].liczbasztuk << endl;
                cout << " Data zwrotu: " <<dane[nr].datazwrotu << endl;
                cout << "---------------------------------------------"<<endl;
                int opcja=0;
                cout << " Wybierasz opcje nr : ";
                cin >> opcja;
                switch(opcja)
                {
                case 1 :
                    {
                cout << " Podaj nowy tytul ksiazki : ";
                cin >> dane[nr].tytul ;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 2 :
                    {
                cout << " Podaj nowego autora : ";
                cin >> dane[nr].autor ;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 3 :
                    {
                cout << " Podaj nowa kategorie : ";
                char wybor_typu;
    cout<<endl<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |1| Historyczne * |4| Mlodziezowe * |7| Komedie *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |2| Horrory * |5| Poradniki * |8| Naukowe *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |3| Dokumentalne * |6| Kryminaly * |9| Inne *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<" Wybierz Kategorie ksiazki: ";
    do
    {
        wybor_typu=getch();
        switch(wybor_typu)
        {
            case '1':
            {
                dane[nr].kategoria="Historyczne";
                break;
            }
            case '2':
            {
                dane[nr].kategoria="Horrory";
                break;
            }
            case '3':
            {
                dane[nr].kategoria="Dokumentalne";
                break;
            }
            case '4':
            {
                dane[nr].kategoria="Mlodziezowe";
                break;
            }
            case '5':
            {
                dane[nr].kategoria="Poradniki";
                break;
            }
            case '6':
            {
                dane[nr].kategoria="Kryminaly";
                break;
            }
            case '7':
            {
                dane[nr].kategoria="Komedie";
                break;
            }
            case '8':
            {
                dane[nr].kategoria="Naukowe";
                break;
            }
            case '9':
            {
                cout<<"Wpisz kategorie : ";
                cin>>dane[nr].kategoria;
                break;
            }
        }
    }while(wybor_typu != '1' && wybor_typu != '2' && wybor_typu != '3'
            && wybor_typu != '4' && wybor_typu != '5' && wybor_typu != '6'
            && wybor_typu != '7' && wybor_typu != '8' && wybor_typu != '9');
                cout <<dane[nr].kategoria<< endl;
                cout << " Dane wprowadzone, nacisnij klawisz.. " << endl;
                getch();
                    }
                break;
                case 4 :
                    {
                cout << " Podaj nowy rok wydania : ";
                do
                {
                cin>>rok;
                if(rok>1234)
                    {
                    if(rok>2015)
                        {
                            cout<<" Podany rok jest nieprawidlowy!"<<endl;
                            cout<<" Podaj ponownie : ";
                        }
                    }
                else
                    {
                        cout<<" Podany rok jest nieprawidlowy!"<<endl;
                        cout<<" Podaj ponownie : ";
                }
                }while(rok<1234 || rok>2015);
                dane[nr].rokwydania=rok;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 5 :
                    {
                cout << " Podaj nowa ilosc wyporzyczonych : ";
                cin >> dane[nr].liczwypo;
                cout << endl;
                if(dane[nr].liczwypo!=0)
                    {
                cout << " Podaj nowa date zwrotu : ";
                cin >> dane[nr].datazwrotu ;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                    }
                    else
                    {
                    dane[nr].datazwrotu="brak";
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                    }

                getch();
                    }
                break;
                case 6 :
                    {
                cout << " Podaj nowa liczbe stron : ";
                cin >> dane[nr].liczbastron ;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 7 :
                    {
                cout << " Podaj nowa liczbe sztuk : ";
                cin >> dane[nr].liczbasztuk;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 8 :
                    {
                cout << " Podaj nowa date zwrotu : ";
                cin >> dane[nr].datazwrotu ;
                cout << endl;
                cout << " Dane wprowadzone, nacisnij klawisz.." << endl;
                getch();
                    }
                break;
                case 0 :
                break;
                default :
            cout << " Nie ma takiej opcji w naszym programie " << endl;
            cout << " Wybierz ponownie " << endl;
             getch();
            }
            Zapisz();
            }
        }
    }

    else
    {
        cout<<endl;
        cout<<" Katalog jest pusty, nacisnij ENTER!";
        getchar();
    }
}
void Usun()
{
    int nr;
    if(liczba_ksiazek!=0)
    {
        cout<<endl;
        cout<<" Podaj numer katalogowy ksiazki i nacisnij ENTER: ";
        cin>>nr;
        cin.ignore();
        if(cin.good()==1)
        {
           if(nr>liczba_ksiazek)
            {
                cout<<endl;
                cout<<" W katalogu nie istnieje ksiazka o numerze "<<nr<<", nacisnij ENTER!";
                getchar();
            }
            else
            {
                for(short k=nr;k<liczba_ksiazek;k++)
                {
                    dane[nr].tytul=dane[nr+1].tytul;
                    dane[nr].autor=dane[nr+1].autor;
                    dane[nr].rokwydania=dane[nr+1].rokwydania;
                    dane[nr].kategoria=dane[nr+1].kategoria;
                    dane[nr].liczbasztuk=dane[nr+1].liczbasztuk;
                    dane[nr].liczwypo=dane[nr+1].liczwypo;
                    dane[nr].liczbastron=dane[nr+1].liczbastron;
                    dane[nr].datazwrotu=dane[nr+1].datazwrotu;
                }
                liczba_ksiazek--;
                cout<<endl;
                cout<<" Ksiazka o numerze katalogowym "<<nr<<" zostala usunieta, nacisnij ENTER!";
                getchar();
                Zapisz();
            }
        }
        else
        {
            cin.clear();
            cin.ignore();
            cout<<endl;
            cout<<" Podana fraza jest nieprawidlowa, nacisnij ENTER!";
            getch();
        }
    }
    else
    {
        cout<<endl;
        cout<<" Katalog jest pusty, nacisnij ENTER!";
        getchar();
    }
}
int Menu()
{
    char wybrana_opcja;
    system("cls");
    for(;;)
    {

        cout<<" ***********************************************************************************"<<endl;
        cout<<"* Obecnie w katalogu znajduje sie "<<liczba_ksiazek<<" ksiazek *"<<endl;
        cout<<" ***********************************************************************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************Baza danych biblioteki****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***********************************************************************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************1-Dodaj ksiazke****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************2-Zapisz katalog****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************3-Modyfikuj****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************4-Wyswietl katalog****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************5-Usun pozycje z katalogu****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************6-Wyszukiwanie****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***************************0-Wyjscie****************************"<<endl;
        cout<<" *******************************************************"<<endl;
        cout<<" ***********************************************************************************"<<endl;
        cout << endl << endl;
        cout << " Wybierz jedna z opcji z ktorej chcialbys skorzystac : ";
        wybrana_opcja=getch();
        cout<<endl;
        switch(wybrana_opcja)
        {
            case '0':
            {
                cout<<endl;
                cout<<" Nastepuje proces zapisu.."<<endl<<endl;
                Zapisz();
                cout<<" Do zobaczenia!"<<endl<<endl;
                exit(0);
            }
            case '1':
            {
                Dodaj();
                break;
            }
            case '2':
            {
                Zapisz();
                break;
            }
            case '3':
            {
                Modyfikacja();
                break;
            }
            case '4':
            {
                Baza();
                break;
            }
            case '5':
            {
                Usun();
                break;
            }
            case '6':
            {
                Wyszukiwanie(dane);
                break;
            }
        }
        system("cls");
    }
    cin.ignore();
    getchar();
}
void typ_ksiazki()
{
    char wybor_typu;
    cout<<endl<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |1| Historyczne * |4| Mlodziezowe * |7| Komedie *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |2| Horrory * |5| Poradniki * |8| Naukowe *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<"* |3| Dokumentalne * |6| Kryminaly * |9| Inne *"<<endl;
    cout<<" ***********************************************************"<<endl;
    cout<<" Wybierz Kategorie ksiazki: ";
    do
    {
        wybor_typu=getch();
        switch(wybor_typu)
        {
            case '1':
            {
                dane[liczba_ksiazek].kategoria="Historyczne";
                break;
            }
            case '2':
            {
                dane[liczba_ksiazek].kategoria="Horrory";
                break;
            }
            case '3':
            {
                dane[liczba_ksiazek].kategoria="Dokumentalne";
                break;
            }
            case '4':
            {
                dane[liczba_ksiazek].kategoria="Mlodziezowe";
                break;
            }
            case '5':
            {
                dane[liczba_ksiazek].kategoria="Poradniki";
                break;
            }
            case '6':
            {
                dane[liczba_ksiazek].kategoria="Kryminaly";
                break;
            }
            case '7':
            {
                dane[liczba_ksiazek].kategoria="Komedie";
                break;
            }
            case '8':
            {
                dane[liczba_ksiazek].kategoria="Naukowe";
                break;
            }
            case '9':
            {
                cout<<"Wpisz kategorie :";
                cin>>dane[liczba_ksiazek].kategoria;
                break;
            }
        }
    }while(wybor_typu != '1' && wybor_typu != '2' && wybor_typu != '3'
            && wybor_typu != '4' && wybor_typu != '5' && wybor_typu != '6'
            && wybor_typu != '7' && wybor_typu != '8' && wybor_typu != '9');
}
void Wyszukiwanie(baza dane[500])
{
    char wybor_szukania;
    cout<<endl<<endl;
    cout<<" Szukaj wedlug:"<<endl;
    cout<<"*-----------------------------------------------*"<<endl;
    cout<<" 1. Kategoria"<<endl;
    cout<<" 2. Tytul"<<endl;
    cout<<" 3. Autor"<<endl;
    cout<<" 4. Numer w katalogu"<<endl<<endl;
    cout<<" Wybierz poprzez nacisniecie klawisza";
    wybor_szukania=getch();
    cout<<endl;
    switch(wybor_szukania)
    {
        case '1':
        {
            string porownanie;
            char kat_ksiazki;
            cout<<endl;
            cout<<endl<<endl;
            cout<<" ***********************************************************"<<endl;
            cout<<"* |1| Historyczne * |4| Mlodziezowe * |7| Komedie *"<<endl;
            cout<<" *************************1*********************************"<<endl;
            cout<<"* |2| Horrory * |5| Poradniki * |8| Naukowe *"<<endl;
            cout<<" ***********************************************************"<<endl;
            cout<<"* |3| Dokumentalne * |6| Kryminaly * |9| Inne *"<<endl;
            cout<<" ***********************************************************"<<endl;
            cout<<" Wybierz Kategorie ksiazki: ";
            do
            {
                kat_ksiazki=getch();
                switch(kat_ksiazki)
                {
                    case '1':
                    {
                        porownanie="Historyczne";
                        break;
                    }
                    case '2':
                    {
                        porownanie="Horrory";
                        break;
                    }
                    case '3':
                    {
                        porownanie="Dokumentalne";
                        break;
                    }
                    case '4':
                    {
                        porownanie="Mlodziezowe";
                        break;
                    }
                    case '5':
                    {
                        porownanie="Poradniki";
                        break;
                    }
                    case '6':
                    {
                        porownanie="Kryminaly";
                        break;
                    }
                    case '7':
                    {
                        porownanie="Komedie";
                        break;
                    }
                    case '8':
                    {
                        porownanie="Naukowe";
                        break;
                    }
                    case '9':
                    {
                        cout<<endl<<"Podaj typ : ";
                        cin>>porownanie;
                        break;
                    }
                }
            }while(kat_ksiazki != '1' && kat_ksiazki != '2' && kat_ksiazki != '3'
                    && kat_ksiazki != '4' && kat_ksiazki != '5' && kat_ksiazki != '6'
                    && kat_ksiazki != '7' && kat_ksiazki != '8' && kat_ksiazki != '9');

            cout<<endl;
            cout<<"*-----------------------------------------------*"<<endl<<endl;
            cout<<"Znaleziono nastepujace ksiazki"<<endl<<endl;
            for(int l=0;l<liczba_ksiazek;l++)
            {
                if(dane[l].kategoria==porownanie)
                {
                cout << " Nr katalogowy : "<<l<<endl;
                cout << "---------------------------------------------"<<endl;
                cout << "Tytul ksiazki : " <<dane[l].tytul << endl;
                cout << "Autor ksiazki : " <<dane[l].autor << endl;
                cout << "Kategoria ksiazki : " <<dane[l].kategoria << endl;
                cout << "Rok wydania : " <<dane[l].rokwydania<<endl;
                cout << "Liczba wyporzyczonych ksiazek : " <<dane[l].liczwypo << endl;
                cout << "Liczba stron : " <<dane[l].liczbastron << endl;
                cout << "liczba sztuk : " <<dane[l].liczbasztuk << endl;
                cout << "Data zwrotu : " <<dane[l].datazwrotu << endl;
                cout << "---------------------------------------------"<<endl;
                }
            }
            cout<<" Aby wrocic do menu nacisnij ENTER!";
            getchar();
            break;
        }
        case '2':
        {
            string porownanie;
            cout<<endl;
            cout<<" Podaj tytul : ";
            cin>>porownanie;
            cin.ignore();
            cout<<"*-----------------------------------------------*"<<endl<<endl;
            cout<<"\tZnaleziono nastepujace ksiazki"<<endl<<endl;
            for(int l=0;l<liczba_ksiazek;l++)
            {
                if(dane[l].tytul==porownanie)
                {
                cout << "---------------------------------------------"<<endl;
                cout << " Nr katalogowy: "<<l<<endl;
                cout << "---------------------------------------------"<<endl;
                cout << "Tytul ksiazki: " <<dane[l].tytul << endl;
                cout << "Autor ksiazki: " <<dane[l].autor << endl;
                cout << "Kategoria ksiazki " <<dane[l].kategoria << endl;
                cout << "Rok wydania: " <<dane[l].rokwydania<<endl;
                cout << "Liczba wyporzyczonych ksiazek: " <<dane[l].liczwypo << endl;
                cout << "Liczba stron: " <<dane[l].liczbastron << endl;
                cout << "liczba sztuk: " <<dane[l].liczbasztuk << endl;
                cout << "Data zwrotu: " <<dane[l].datazwrotu << endl;
                cout << "---------------------------------------------"<<endl;
                }
            }
            cout<<" Aby wrocic do menu nacisnij ENTER!";
            getchar();
            break;
        }
        case '3':
        {
            string porownanie;
            cout<<endl;
            cout<<" Podaj autora: ";
            cin>>porownanie;
            cin.ignore();
            cout<<"*-----------------------------------------------*"<<endl<<endl;
            cout<<"\tZnaleziono nastepujace ksiazki"<<endl<<endl;
            for(int l=0;l<liczba_ksiazek;l++)
            {
                if(dane[l].autor==porownanie)
                {
                cout << "---------------------------------------------"<<endl;
                cout << " Nr katalogowy: "<<l<<endl;
                cout << "---------------------------------------------"<<endl;
                cout << "Tytul ksiazki: " <<dane[l].tytul << endl;
                cout << "Autor ksiazki: " <<dane[l].autor << endl;
                cout << "Kategoria ksiazki " <<dane[l].kategoria << endl;
                cout << "Rok wydania: " <<dane[l].rokwydania<<endl;
                cout << "Liczba wyporzyczonych ksiazek: " <<dane[l].liczwypo << endl;
                cout << "Liczba stron: " <<dane[l].liczbastron << endl;
                cout << "liczba sztuk: " <<dane[l].liczbasztuk << endl;
                cout << "Data zwrotu: " <<dane[l].datazwrotu << endl;
                cout << "---------------------------------------------"<<endl;
                }
            }
            cout<<" Aby wrocic do menu nacisnij ENTER!";
            getchar();
            break;
        }
        case '4':
        {
            int l;
            cout<<endl;
            cout<<" Podaj numer katalogowy: ";
            cin>>l;
            cin.ignore();
            if(cin.good()==1)
            {
                cout << "---------------------------------------------"<<endl;
                cout << " Nr katalogowy: "<<l<<endl;
                cout << "---------------------------------------------"<<endl;
                cout << "Tytul ksiazki: " <<dane[l].tytul << endl;
                cout << "Autor ksiazki: " <<dane[l].autor << endl;
                cout << "Kategoria ksiazki " <<dane[l].kategoria << endl;
                cout << "Rok wydania: " <<dane[l].rokwydania<<endl;
                cout << "Liczba wyporzyczonych ksiazek: " <<dane[l].liczwypo << endl;
                cout << "Liczba stron: " <<dane[l].liczbastron << endl;
                cout << "liczba sztuk: " <<dane[l].liczbasztuk << endl;
                cout << "Data zwrotu: " <<dane[l].datazwrotu << endl;
                cout << "---------------------------------------------"<<endl;
            }
            else
            {
                cin.clear();
                cin.ignore();
                cout<<endl;
                cout<<" Podana fraza jest nieprawidlowa, nacisnij ENTER!";
                getch();
            }
            cout<<" Aby wrocic do menu nacisnij ENTER!";
            getchar();
            break;
        }
    }
}
void wpisz_rok()
{
    do
    {
    cin>>rok;
    if(rok>1234)
    {
        if(rok>2015)
        {
        cout<<" Podany rok jest nieprawidlowy!"<<endl;
        cout<<" Podaj ponownie : ";
        }
    }
    else
    {
        cout<<" Podany rok jest nieprawidlowy!"<<endl;
        cout<<" Podaj ponownie : ";
    }
    }while(rok<1234 || rok>2015);
    dane[liczba_ksiazek].rokwydania=rok;
}

Prosiłbym także o rady jeśli wyda się w nim coś, hmm... wadliwego :wink:


(Ryan) #2

Jeśli dobrze pamiętam (unikam strumieni jak ognia) >> czyta do białego znaku. Możesz użyć .get() .readline() albo noskipws, żeby uzyskać rezultat inny, niż obecnie.

Z ogólnych uwag:

  • debuguj

  • pytanie “co jest źle” jest słabe i śmierdzi lenistwem ;-] [1]

  • zamiast tworzyć takie kobylaste switch-case’y, posłuż się odrobiną matematyki i/lub tablicami (lookup tables)

  • dziel funkcje na mniejsze

  • staraj się nie pchać całego stanu w globalnych zmiennych

  • popracuj nad estetyką kodu i komentarzami

[1] za moich czasów (brzmię jak dziadek) debugowało się aplikację przed pytaniem innych ludzi o pomoc; częściowo przez to, że nie było Internetu, częściowo przez to, że programowanie to sztuka rozwiązywanie problemów, a nie pytania o rozwiązania, więc więcej się wyciąga z rozkminiania samemu