Witam, mam do napisania baze danych, taka biblioteke ksiazek. Baza ta sklada sie z: wyswietlenia informacji o ksiazkach, dodawaniu, wyswietlaniu wg podanej informacji oraz posortowaniu. Problem pojawia sie przy posortowaniu. Z gory dzieki ;)
#include <iostream>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <algorithm>
#include <functional>
using namespace std;
int ile=0;
int ilosc()
{
string linia;
int licznik = 0;
ifstream liczba("bibl.txt");
while (getline(liczba, linia)) licznik ++;
return licznik=(licznik/4);
liczba.close();
}
struct ksiazka
{
string tytul, autor;
int rok_wydania;
bool czy_do_archiwum;
};
void wyswietl(ksiazka *tab)
{
ksiazka t[(ilosc())+ile];
ifstream odczyt("bibl.txt");
for(int i=0; i<(ilosc()); i++)
{
odczyt>>t[i].tytul;
odczyt>>t[i].autor;
odczyt>>t[i].rok_wydania;
odczyt>>t[i].czy_do_archiwum;
}
cout<<left<<setw(20)<<"Tytul"<<left<<setw(25)<<"Autor"<<left<<setw(15)<<"Rok"<<left<<setw(10)<<"Archiwum"<<endl;
for(int i=0; i<(ilosc()); i++)
{
cout<<setw(20)<<"_________________________________________________________________________________"<<endl;
cout<<left<<setw(20)<<t[i].tytul<<setw(25)<<t[i].autor<<left<<setw(15)<<t[i].rok_wydania<<left<<setw(10)<<t[i].czy_do_archiwum<<endl;
}
odczyt.close();
}
void dodaj(ksiazka *tab)
{
ksiazka t[(ilosc())+ile];
int i;
system("cls");
cout<<"Podaj ilosc ksiazek ktore chcesz wprowadzic do bazy: ";
cin>>ile;
for (i=1; i<=ile;i++)
{
cout<<endl<<"Autor: ";
cin>>t[i].autor;
cout<<"Tytul: ";
cin>>t[i].tytul;
cout<<"Rok: ";
cin>>t[i].rok_wydania;
cout<<"Czy do archiwum: ";
cin>>t[i].czy_do_archiwum;
}
ofstream plik("bibl.txt",ios_base::app);
for (i=1; i<=ile;i++)
{
plik<<endl<< t[i].tytul<< endl;
plik<<t[i].autor << endl;
plik<<t[i].rok_wydania << endl;
plik<<t[i].czy_do_archiwum;
}
plik.close();
}
void sort(ksiazka *tab)
{
ifstream odczyt("bibl.txt");
ksiazka t[(ilosc())+ile];
for(int i=0; i<(ilosc()); i++)
{
odczyt>>t[i].tytul;
odczyt>>t[i].autor;
odczyt>>t[i].rok_wydania;
odczyt>>t[i].czy_do_archiwum;
}
sort(t,(t+ilosc()));}
sort(t[i].rok_wydania.begin(), t[i+ilosc()].rok_wydania.end());
if(t[i].rok_wydania>t[i+1].rok_wydania)
{
swap(t[i].rok_wydania, t[i+1].rok_wydania);
swap(t[i].tytul, t[i+1].tytul);
swap(t[i].autor, t[i+1].autor);
swap(t[i].czy_do_archiwum, t[i+1].czy_do_archiwum);
}
}
for( int i = 0; i <( ilosc()); i++ )
cout<<"Tytul: "<<t[i].tytul<<endl;
cout<<"Autor: "<<t[i].autor<<endl;
cout<<"Rok wydania: "<<t[i].rok_wydania<<endl;
cout<<"Archiwum: "<<t[i].czy_do_archiwum<<endl<<endl<<endl;
}
odczyt.close();
}
/*void wypisz(ksiazka *tab)
{
ksiazka t[(ilosc())+ile];
ifstream odczyt("bibl.txt");
for(int i=0; i<(ilosc()); i++)
{
odczyt>>t[i].tytul;
odczyt>>t[i].autor;
odczyt>>t[i].rok_wydania;
odczyt>>t[i].czy_do_archiwum;
cout<<"Tytul: "<<t[i].tytul<<endl;
cout<<"Autor: "<<t[i].autor<<endl;
cout<<"Rok wydania: "<<t[i].rok_wydania<<endl;
cout<<"Archiwum: "<<t[i].czy_do_archiwum<<endl<<endl<<endl;
}
odczyt.close();
}*/
int main()
{
ksiazka tab[(ilosc())+ile];
int odp;
do
{
cout<<endl<<"MENU"<<endl<<endl;
cout<<"1. Wyswietl dane o ksiazkach "<<endl;
cout<<"2. Dodaj ksiazke "<<endl;
cout<<"3. Wyswietl ksiazke wedlug jednego z kryteriow "<<endl;
cout<<"4. Posortuj wedlug wybranej informacji "<<endl;
cout<<"5. Koniec "<<endl<<endl;
cin>>odp;
switch(odp)
{
case 1: wyswietl(tab);
break;
case 2: dodaj(tab);
break;
case 3:
int h;
cout<<"1. Wg najmlodszej"<<endl;
cout<<"2. Wg autora"<<endl;
cout<<"3. Wg archiwum"<<endl;
cin>>h;
switch(h)
{
case 1: cout<<"Posortowane wg najmlodszej: "<<endl<<endl;
sort(tab); //wypisz(tab);
break;
case 2: cout<<"Autor alfabetycznie: "<<endl;
break;
case 3: cout<<"Ilosc w archiwum malejąco: "<<endl;
}
break;
break;
case 4:
int k;
cout<<"1. Wedlug roku"<<endl;
cout<<"2. Wedlug tytulu"<<endl;
cin>>k;
switch(k)
{
case 1: cout<<"Rosnaco: ";
break;
case 2: cout<<"Od 'A' do 'Z' "<<endl;
break;
}
break;
case 5: cout<<"Wyjscie z programu!"<<endl;
break;
}
}
while(odp!=5);
return 0;
}