Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <stdexcept>
- #include <cstring>
- #include <string>
- #include <memory>
- #include <vector>
- struct Radnik {
- char ime_i_prezime[20], adresa[50];
- int telefon;
- };
- class Imenik {
- int kapacitet, broj_evidentiranih;
- std::vector<std::shared_ptr<Radnik>>radnici;
- public:
- explicit Imenik() : broj_evidentiranih(0){}
- Imenik(const Imenik &i) : broj_evidentiranih(i.broj_evidentiranih),radnici(i.radnici){
- }
- Imenik(Imenik && i):broj_evidentiranih(i.broj_evidentiranih)
- {
- radnici=i.radnici;
- }
- Imenik &operator=(const Imenik &i){
- radnici=i.radnici;
- broj_evidentiranih=i.broj_evidentiranih;
- }
- Imenik &operator=(Imenik && i){
- std::swap(broj_evidentiranih,i.broj_evidentiranih);
- std::swap(radnici,i.radnici);
- }
- void DodajRadnika(const Radnik &r) {
- radnici.push_back(std::make_shared<Radnik>(r));
- broj_evidentiranih++;
- }
- void DodajRadnika(char *ime_i_prezime,char *adresa,int telefon){
- Radnik novi;
- std::strcpy(novi.ime_i_prezime,ime_i_prezime);
- std::strcpy(novi.adresa,adresa);
- novi.telefon=telefon;
- //if(std::strlen(ime_i_prezime)>20 || std::strlen(adresa)>50)throw std::domain_error("Dugo");
- radnici.push_back(std::make_shared<Radnik>(novi));
- broj_evidentiranih++;
- }
- void IspisiImenik() const {
- for(int i = 0; i < broj_evidentiranih; i++) {
- std::cout << "Ime i prezime: " << radnici[i]->ime_i_prezime << std::endl
- << "Adresa: " << radnici[i]->adresa << std::endl
- << "Telefon: " << radnici[i]->telefon << std::endl;
- }
- }
- void IspisiRadnika(char *ime)const{
- for(int i=0;i<broj_evidentiranih;i++){
- std::string trazeni=radnici[i]->ime_i_prezime;
- std::string parametar=ime;
- if(trazeni==parametar){
- std::string adr=radnici[i]->adresa;
- std::cout<<"Ime: "<<trazeni<<" adresa: "<<adr<<" br tel: "<<radnici[i]->telefon;
- }
- }
- }
- void IspisiNaSlovo(char slovo)const{
- for(int i=0;i<broj_evidentiranih;i++){
- if(*radnici[i]->ime_i_prezime == slovo){
- std::string adr=radnici[i]->adresa;
- std::string trazeni=radnici[i]->ime_i_prezime;
- std::cout<<"Ime: "<<trazeni<<" adresa: "<<adr<<" br tel: "<<radnici[i]->telefon;
- }
- }
- }
- void IspisiSoritrano()const{
- std::vector<Radnik*>v_glupih;
- for(int i=0;i<broj_evidentiranih;i++)v_glupih.push_back(radnici[i].get());
- std::sort(v_glupih.begin(),v_glupih.end(),[](Radnik *prvi,Radnik *drugi){if(std::strcmp(prvi->ime_i_prezime,drugi->ime_i_prezime))return false;});
- std::for_each(v_glupih.begin(),v_glupih.end(),[](Radnik *prvi){std::string novo=prvi->ime_i_prezime;std::cout<<novo<<"\n";});
- }
- int &operator[](char *ime){
- for(int i=0;i<broj_evidentiranih;i++){
- std::string trazeni=radnici[i]->ime_i_prezime;
- std::string parametar=ime;
- if(trazeni == parametar)return radnici[i]->telefon;
- }
- }
- };
- int main() {
- Radnik r1{"Aeho Mehic", "Zmaja od Bosne 13, Sarajevo", 1234};
- Radnik r2{"Aero Peric", "Travnicka 15, Zenica", 4321};
- Imenik i;
- i.DodajRadnika(r1);
- i.DodajRadnika("Aero Peric", "Travnicka 15, Zenica", 4321);
- Imenik k;
- k=i;
- i.IspisiImenik();
- std::cout<<"\n a nakon dodjele: \n";
- k.IspisiImenik();
- std::cout<<"\n eo radnika: \n";
- i.IspisiNaSlovo('P');
- i["Aero Peric"]=1523;
- i.IspisiRadnika("Aero Peric");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement