Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- using namespace std;
- class Element{
- public :
- Element * Pop, * Nast;
- int id;
- Element()
- {
- Pop=NULL;Nast=NULL;
- }
- Element(int ID)
- {
- Pop=NULL;Nast=NULL,id = ID;
- }
- virtual void Print()
- {
- cout<< "ID: "<<id << endl;
- }
- virtual void Zapisz_sie_w_pliku(ofstream *plik)
- {
- *plik << "Nazwa: Elememt"<< endl;
- *plik << "id: "<< id << endl;
- }
- virtual void Odczytaj_sie(ifstream * plik)
- {
- char *text1;
- *plik >> text1 >> id;
- if(strcmp(text1, "id:")!=0)
- {
- cout << "Blad Element 1 " << text1;
- }
- }
- };
- class Lista{
- public:
- Element * Pierwszy, * Ostatni;
- virtual bool czy_leq(Element * P, Element *D)
- {
- if(P -> id <= D->id)return true;
- return false;
- }
- void AddSort(Element *E)
- {
- if(Pierwszy == NULL)
- {
- Add2End(E);
- }
- else if (czy_leq(E,Pierwszy))
- {
- Pierwszy -> Pop = E;
- E->Nast=Pierwszy;
- Pierwszy = E;
- Ilosc++;
- }
- else if(czy_leq(Ostatni,E))
- {
- Add2End(E);
- }
- else
- {
- Element *Temp = Pierwszy;
- while(Temp && czy_leq(Temp,E))
- {
- Temp = Temp->Nast;
- }
- Temp -> Pop = Temp->Pop;
- Temp->Pop=E;
- E->Nast=Temp;
- Ilosc++;
- }
- }
- int Ilosc;
- void Wyjmij(Element *E)
- {
- if(Pierwszy == E)
- {
- if(Ostatni == E)
- {
- Pierwszy = Ostatni = NULL;
- }
- else
- {
- Pierwszy = Pierwszy -> Nast;
- Pierwszy -> Pop = NULL;
- }
- }
- else if(Ostatni == E)
- {
- Ostatni = Ostatni -> Pop;
- Ostatni -> Nast = NULL;
- }
- else
- {
- E->Nast->Pop = E->Pop;
- E->Pop->Nast = E->Nast;
- }
- E->Pop=NULL;
- E->Nast=NULL;
- Ilosc--;
- }
- Element *Znajdz(int id_F)
- {
- for(Element*Temp = Pierwszy;Temp;Temp=Temp->Nast)
- {
- if(Temp->id = id_F) return Temp;
- return NULL;
- }
- }
- void Ponumeruj()
- {
- int i=1;
- for(Element*Temp = Pierwszy;Temp;Temp=Temp->Nast)
- {
- Temp -> id = ++i;
- }
- }
- Lista()
- {
- Ostatni=NULL;
- Pierwszy=NULL;
- Ilosc = 0;
- cout<<"Kostruktor"<<endl;
- }
- void Add2End(Element * E)
- {
- if(Pierwszy==NULL)
- {
- Pierwszy = Ostatni = E;
- Ilosc = 1;
- }
- else
- {
- Ostatni->Nast=E;
- E->Pop = Ostatni;
- Ostatni = E;
- Ilosc++;
- }
- }
- virtual void Naglowek()
- {
- cout<<"Lista"<<endl;
- cout<<"Lista Elementow "<<Ilosc<<endl;
- }
- void Print_Sama_Lista(){
- Element * Temp = Pierwszy;
- while(Temp)
- {
- cout<< "ID: "<<Temp->id<<endl;
- Temp = Temp->Nast;
- }
- }
- void Print()
- {
- Naglowek();
- Print_Sama_Lista();
- }
- void Print_Reverse()
- {
- Naglowek();
- for(Element * Temp=Ostatni;Temp;Temp=Temp->Pop)
- {
- cout<<"ID: " <<Temp->id<<endl;
- }
- }
- void Zapisz_do_pliku(char * Nazwa)
- {
- ofstream plik;
- plik.open( Nazwa);
- if( plik.good() == false )
- {
- cout << "brak dostepu";
- }
- else
- {
- Zapisz_w_otwartym_pliku(&plik);
- plik.close();
- };
- };
- void Zapisz_w_otwartym_pliku(ofstream *plik)
- {
- *plik << "Nazwa: Lista"<< endl;
- *plik << "ilosc: "<< Ilosc << endl;
- Element * Temp= Pierwszy;
- while (Temp)
- {
- Temp->Zapisz_sie_w_pliku(plik);
- Temp=Temp->Nast;
- }
- };
- void Odczytaj_z_pliku(char * Nazwa)
- {
- ifstream plik;
- plik.open( Nazwa);
- if( plik.good() == false )
- {
- cout << "brak dostepu";
- }
- else
- {
- Odczytaj_sie_z_otwartego_pliku(&plik);
- plik.close();
- };
- }
- void Odczytaj_sie_z_otwartego_pliku(ifstream *plik)
- {
- char text1[255], text2[255];
- *plik >> text1 >> text2;
- if (strcmp(text1,"Nazwa:")!=0||strcmp(text2,"Lista")!=0)
- {
- cout << "Blad list 1" << text1 << "::"<< text2;
- exit(1);
- }
- ///*plik << "ilosc: "<< ilosc << endl;
- int I;
- *plik >> text1 >> I;
- if (strcmp(text1,"ilosc:")!=0)
- {
- cout << "Blad list 2" << text1 << "::"<< text2;
- exit(1);
- }
- for (int n=0;n <I ;n++)
- {
- Element * E = Oczytaj_obiekt_z_pliku(plik);
- Add2End(E);
- }
- }
- virtual Element * Utworz_obiekt_takiej_klasy(string Nazwa)
- {
- if (Nazwa == "Element")
- {
- return new Element();
- }
- else
- {
- cout << " Blad Lisa::Utworz_obiekt_takiej_klasy" << Nazwa;
- exit(1);
- }
- }
- Element * Oczytaj_obiekt_z_pliku(ifstream * plik)
- {
- char text1[255]; string text2;
- *plik >> text1 >> text2;
- if (strcmp(text1,"Nazwa:")!=0)
- {
- cout << "Blad odczyt 1" << text1 << "::"<< text2;
- exit(1);
- }
- Element * E = Utworz_obiekt_takiej_klasy(text2);
- E->Odczytaj_sie(plik);
- return E;
- }
- ~Lista()
- {
- Element * E= Pierwszy, *F;
- while(E)
- {
- F=E;
- E=E->Nast;
- delete F;
- }
- Pierwszy = NULL;
- Ostatni = NULL;
- }
- };
- class Pies:public Element
- {
- public:
- string rasa;
- string adres_budy;
- int wiek;
- string imie;
- Pies(int ID,string imionaa,string Rasa,int Wiek,string AB):Element(ID)
- {
- rasa = Rasa;
- wiek = Wiek;
- adres_budy = AB;
- imie = imionaa;
- }
- void Print()
- {
- cout << "Imie: "<< imie <<endl;
- cout << "Rasa : "<< rasa<<endl<< "Wiek : "<<wiek<<endl<<"Adres Budy : "<<adres_budy <<endl;
- cout << endl;
- }
- void Zapisz_sie_w_pliku(ofstream *plik)
- {
- *plik << "Nazwa : Pies"<<endl;
- *plik << "Id : " << id<<endl;
- *plik << "Rasa : "<<rasa<<endl;
- *plik << "Adres_Budy : "<<adres_budy<<endl;
- *plik << "Wiek : "<<wiek<<endl;
- *plik << endl;
- }
- void Odczytaj_sie(ifstream *plik)
- {
- char text1[256];
- *plik >> text1 >> id;
- if(strcmp(text1, "ID:")!=0)
- {
- cout << "Blad Pies 1 " << text1;
- }
- *plik >> text1 >> rasa;
- if(strcmp(text1, "rasa:")!=0)
- {
- cout<<"Blad Pies 2 " << text1;
- }
- *plik >> text1 >> adres_budy;
- if(strcmp(text1, "adres_budy:")!=0)
- {
- cout <<"Blad Pies 2 " << text1;
- }
- *plik >> text1 >> wiek;
- if(strcmp(text1, "wiek:")!=0)
- {
- cout<<"Blad Pies 3 " << text1;
- }
- }
- Pies():Element(){};
- };
- class Kot:public Element
- {
- public:
- string rasa;
- string adres_kuwety;
- int wiek;
- string imie;
- Kot(int ID,string imionaa,string Rasa,int Wiek,string AK):Element(ID)
- {
- rasa = Rasa;
- wiek = Wiek;
- adres_kuwety= AK;
- imie = imionaa;
- }
- Kot():Element(){};
- void Print()
- {
- cout << "Imie: "<< imie <<endl;
- cout << "Rasa : "<< rasa<<endl<< "Wiek : "<<wiek<<endl<<"Adres Kuwety : "<<adres_kuwety<<endl;
- cout << endl;
- }
- void Zapisz_sie_w_pliku(ofstream *plik)
- {
- *plik << "Nazwa: Kot"<<endl;
- *plik << "Id: " << id<<endl;
- *plik << "Rasa: "<<rasa<<endl;
- *plik << "Adres kuwety: "<<adres_kuwety<<endl;
- *plik << "Wiek : "<< wiek<<endl;
- *plik << endl;
- }
- void Odczytaj_sie(ifstream *plik)
- {
- char text1[256];
- *plik >> text1 >> id;
- if(strcmp(text1, "ID: ")!=0)
- {
- cout << "Blad Kot 1 " << text1;
- }
- *plik >> text1 >> rasa;
- if(strcmp(text1, "rasa: ")!=0)
- {
- cout<<"Blad Kot 2 " << text1;
- }
- *plik >> text1 >> adres_kuwety;
- if(strcmp(text1, "adres_kuwety: ")!=0)
- {
- cout <<"Blad Kot 2 " << text1;
- }
- *plik >> text1 >> wiek;
- if(strcmp(text1, "wiek: ")!=0)
- {
- cout<<"Blad Kot 3 " << text1;
- }
- }
- };
- class Zoo:public Lista
- {
- public:
- void Print()
- {
- Naglowek();
- Element *Temp = Pierwszy;
- while(Temp)
- {
- Temp->Print();
- Temp = Temp->Nast;
- }
- }
- void Dodaj_Zwierze()
- {
- string nowezwierze;
- int iloscc,wiek;
- string imionaa;
- string rasa;
- string adres_kuwety,adres_budy;
- int i;
- cout << "Podaj Zwierze (Pies/Kot): ";
- cin >> nowezwierze;
- cout << "Podaj ilosc: ";
- cin >> iloscc;
- if(nowezwierze == "Pies" || nowezwierze == "pies")
- {
- for(i = 0; i < iloscc;i++)
- {
- int idz = 1;
- cout <<"Adres Budy: ";
- cin >> adres_budy;
- cout << "Podaj Rase Psa: ";
- cin >> rasa;
- cout << "Podaj imie Psa: ";
- cin >> imionaa;
- cout << "Podaj wiek Psa: ";
- cin >> wiek;
- cout << endl;
- idz += i;
- Pies *P = new Pies(idz,imionaa, rasa ,wiek ,adres_budy);
- Add2End(P);
- }
- }
- else if(nowezwierze == "Kot" || nowezwierze == "kot")
- {
- for(i = 0; i < iloscc;i++)
- {
- int idz = 1;
- int idzapamietane;
- cout <<"Adres Kuwety: ";
- cin >> adres_kuwety;
- cout << "Podaj Rase: " ;
- cin >> rasa;
- cout << "Podaj Imie: ";
- cin >> imionaa;
- cout << "Podaj wiek Kota: ";
- cin >> wiek;
- cout << endl;
- idz += i;
- Kot *K = new Kot(idz,imionaa,rasa, wiek,adres_kuwety);
- Add2End(K);
- }
- }
- }
- Element * Utworz_obiekt_takiej_klasy(string Nazwa)
- {
- if (Nazwa == "Kot")
- {
- return new Kot();
- }
- else if (Nazwa == "Pies")
- {
- return new Pies();
- }
- else
- {
- cout << " Blad Zoo::Utworz_obiekt_takiej_klasy" << Nazwa;
- exit(1);
- }
- }
- void UsunZwierze()
- {
- Print();
- cout << "Podaj id:"<<endl;
- int id;
- cin >> id;
- Element *Z = Znajdz(id);
- if(Z)
- {
- cout << "Czy chcesz usunac:(T/N)"<<endl;
- Z->Print();
- string d;
- cin >> d;
- if(d == "t" || d == "T")
- {
- Wyjmij(Z);
- delete Z;
- Ponumeruj();
- }
- }
- else
- {
- cout << "Nie ma takiego ID";
- }
- system("pause");
- }
- void SortZoo()
- {
- Zoo Z;
- while(Pierwszy)
- {
- Element * E;
- E = Pierwszy;
- Wyjmij(Pierwszy);
- Z.AddSort(E);
- }
- Pierwszy = Z.Pierwszy;
- Ostatni = Z.Ostatni;
- Z.Pierwszy = NULL;
- Ilosc = Z.Ilosc;
- Z.Pierwszy = NULL;
- Z.Ostatni = NULL;
- }
- };
- class Ekran{
- public:
- void Menu()
- {
- system("cls");
- cout << "Menu podopiecznych |" <<endl;
- cout << "-------------------|" <<endl;
- cout << "0. Wyjscie |" << endl;
- cout << "-------------------|" <<endl;
- cout << "1. Wydrukuj |" << endl;
- cout << "-------------------|" <<endl;
- cout << "2. Zapisz |" << endl;
- cout << "-------------------|" <<endl;
- cout << "3. Dodaj zwierze |" <<endl ;
- cout << "-------------------|" <<endl;
- cout << "4. Usun zwierze |"<<endl;
- cout << "-------------------|" <<endl;
- cout << "5. Sort |"<<endl;
- cout << "-------------------|" <<endl;
- cout << "6. Dopisz Zwierze |"<<endl;
- cout << "-------------------|" <<endl;
- cout << "Wybierz opcje: " ;
- }
- };
- int main(int argc, char** argv) {
- Zoo Z;
- int zapamietanieid;
- int opcja = -1;
- while(opcja!=0)
- {
- Ekran E;
- E.Menu();
- cin >> opcja;
- switch(opcja)
- {
- case 0:
- cout << "Dziekujemy za skorzystanie. Zyczymy milego dnia." << endl; break;
- case 1: Z.Print();system("PAUSE");break;
- case 2: Z.Zapisz_do_pliku("Schronisko.txt");break;
- case 3: Z.Dodaj_Zwierze();break;
- case 4:Z.UsunZwierze();break;
- case 5:Z.SortZoo();
- case 6:;break;
- default:
- cout << "zla opcja";
- system("PAUSE");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement