Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <stdexcept>
  4. #include <cstring>
  5. #include <string>
  6. #include <memory>
  7. #include <vector>
  8. struct Radnik {
  9. char ime_i_prezime[20], adresa[50];
  10. int telefon;
  11. };
  12. class Imenik {
  13. int kapacitet, broj_evidentiranih;
  14. std::vector<std::shared_ptr<Radnik>>radnici;
  15. public:
  16. explicit Imenik() : broj_evidentiranih(0){}
  17. Imenik(const Imenik &i) : broj_evidentiranih(i.broj_evidentiranih),radnici(i.radnici){
  18. }
  19. Imenik(Imenik && i):broj_evidentiranih(i.broj_evidentiranih)
  20. {
  21. radnici=i.radnici;
  22. }
  23. Imenik &operator=(const Imenik &i){
  24.  
  25. radnici=i.radnici;
  26. broj_evidentiranih=i.broj_evidentiranih;
  27. }
  28. Imenik &operator=(Imenik && i){
  29. std::swap(broj_evidentiranih,i.broj_evidentiranih);
  30. std::swap(radnici,i.radnici);
  31. }
  32. void DodajRadnika(const Radnik &r) {
  33. radnici.push_back(std::make_shared<Radnik>(r));
  34. broj_evidentiranih++;
  35. }
  36. void DodajRadnika(char *ime_i_prezime,char *adresa,int telefon){
  37. Radnik novi;
  38. std::strcpy(novi.ime_i_prezime,ime_i_prezime);
  39. std::strcpy(novi.adresa,adresa);
  40. novi.telefon=telefon;
  41. //if(std::strlen(ime_i_prezime)>20 || std::strlen(adresa)>50)throw std::domain_error("Dugo");
  42. radnici.push_back(std::make_shared<Radnik>(novi));
  43. broj_evidentiranih++;
  44. }
  45. void IspisiImenik() const {
  46. for(int i = 0; i < broj_evidentiranih; i++) {
  47. std::cout << "Ime i prezime: " << radnici[i]->ime_i_prezime << std::endl
  48. << "Adresa: " << radnici[i]->adresa << std::endl
  49. << "Telefon: " << radnici[i]->telefon << std::endl;
  50. }
  51. }
  52. void IspisiRadnika(char *ime)const{
  53. for(int i=0;i<broj_evidentiranih;i++){
  54. std::string trazeni=radnici[i]->ime_i_prezime;
  55. std::string parametar=ime;
  56. if(trazeni==parametar){
  57. std::string adr=radnici[i]->adresa;
  58. std::cout<<"Ime: "<<trazeni<<" adresa: "<<adr<<" br tel: "<<radnici[i]->telefon;
  59. }
  60. }
  61. }
  62. void IspisiNaSlovo(char slovo)const{
  63. for(int i=0;i<broj_evidentiranih;i++){
  64. if(*radnici[i]->ime_i_prezime == slovo){
  65. std::string adr=radnici[i]->adresa;
  66. std::string trazeni=radnici[i]->ime_i_prezime;
  67. std::cout<<"Ime: "<<trazeni<<" adresa: "<<adr<<" br tel: "<<radnici[i]->telefon;
  68. }
  69. }
  70. }
  71. void IspisiSoritrano()const{
  72. std::vector<Radnik*>v_glupih;
  73. for(int i=0;i<broj_evidentiranih;i++)v_glupih.push_back(radnici[i].get());
  74. 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;});
  75. std::for_each(v_glupih.begin(),v_glupih.end(),[](Radnik *prvi){std::string novo=prvi->ime_i_prezime;std::cout<<novo<<"\n";});
  76. }
  77. int &operator[](char *ime){
  78. for(int i=0;i<broj_evidentiranih;i++){
  79. std::string trazeni=radnici[i]->ime_i_prezime;
  80. std::string parametar=ime;
  81. if(trazeni == parametar)return radnici[i]->telefon;
  82. }
  83. }
  84. };
  85.  
  86. int main() {
  87. Radnik r1{"Aeho Mehic", "Zmaja od Bosne 13, Sarajevo", 1234};
  88. Radnik r2{"Aero Peric", "Travnicka 15, Zenica", 4321};
  89. Imenik i;
  90. i.DodajRadnika(r1);
  91. i.DodajRadnika("Aero Peric", "Travnicka 15, Zenica", 4321);
  92. Imenik k;
  93. k=i;
  94. i.IspisiImenik();
  95. std::cout<<"\n a nakon dodjele: \n";
  96. k.IspisiImenik();
  97. std::cout<<"\n eo radnika: \n";
  98. i.IspisiNaSlovo('P');
  99.  
  100. i["Aero Peric"]=1523;
  101. i.IspisiRadnika("Aero Peric");
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement