Advertisement
Kenoo

Dinamički nizovi ( 5. zadatak - radnici )

Mar 17th, 2018
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. /*
  2. Zadatak 5
  3. Napišite program u kojem ćete:
  4.  kreirajte dinamički niz objekata tipa radnik od onoliko članova koliko želi korisnik;
  5. struct radnik
  6. {
  7. int ib;
  8. char ime[10];
  9. char prezime[10];
  10. double dohodak[12];
  11. int staz;
  12. char spol[10];
  13. };
  14.  kreirati funkciju za unos obilježja za sve objekte: void unos(radnik *, int);
  15.  kreirati funkciju za ispis obilježja jednog objekta: void ispis(radnik *);
  16.  kreirati funkciju koja će prebrojati koliko radnika su žene:
  17. int prebroji_zene(radnik *, int);
  18.  kreirati novi niz u dinamičkoj memoriji;
  19.  kreirati funkciju u kojoj ćete kopirati sve žene u novonapravljeni niz kopirati sve
  20. žene: void kopiraj_zene(radnik *, radnik *, int);
  21.  kreirati funkciju koja će pronaći i vratiti radnika s najdužim prezimenom:
  22. radnik * najduze_prezime(radnik *, int);
  23.  kreirati funkciju koja će vršiti pretragu radnika po imenu, te ispisati sva obilježja
  24. radnika za koje je utvrđeno da imaju traženo ime:
  25. void pretraga_po_imenu(radnik *, char *, int);
  26.  kreirati funkciju koja će izračunati godišnje prihode za izabranog radnika:
  27. double prihodi(radnik *, int, int); radnika se bira preko IB-a radnika, a prihodi
  28. se računaju tako da sve zbroje dohoci za 12 mjeseci + 6% za svaku godinu staža;
  29. */
  30.  
  31. #include<iostream>
  32. using namespace std;
  33.  
  34. struct radnik
  35. {
  36. int ib;
  37. char ime[10];
  38. char prezime[10];
  39. double dohodak[12];
  40. int staz;
  41. char spol[10]; // unijeti musko ili zensko
  42. };
  43.  
  44. void unos(radnik *niz, int vel)
  45. {
  46. for (int i = 0; i < vel; i++)
  47. {
  48. cout << "Unesite obiljezja " << i + 1 << ". radnika" << endl;
  49. cout << "Unesite IB " << endl;
  50. cin >> niz[i].ib;
  51. cin.ignore();
  52. cout << "Unesite ime" << endl;
  53. cin.getline(niz[i].ime, 10);
  54. cout << "Unesite prezime" << endl;
  55. cin.getline(niz[i].prezime, 10);
  56. cout << "Unesite plate po mjesecima" << endl;
  57. for (int j = 0; j < 12; j++)
  58. {
  59. cin >> niz[i].dohodak[j];
  60. }
  61. cin.ignore();
  62. cout << "Unesite broj godina staza" << endl;
  63. cin >> niz[i].staz;
  64. cin.ignore();
  65. cout << "Unesite spol" << endl;
  66. cin.getline(niz[i].spol, 20);
  67.  
  68.  
  69. }
  70. }
  71.  
  72. void ispis(radnik *niz)
  73. {
  74.  
  75. cout << "IB:" <<niz->ib << endl;
  76. cout << "Ime:" << niz->ime << endl;
  77. cout << "Prezime:" << niz->prezime << endl;
  78. cout << "Plate po mjesecima:" << endl;
  79. for (int i = 0; i < 12; i++)
  80. {
  81. cout << niz->dohodak[i] << "|";
  82. }
  83. cout << "Godine staza:" << niz->staz << endl;
  84. cout << "Spol:" << niz->spol << endl;
  85. cout << endl << endl;
  86. }
  87.  
  88. int prebroji_zene(radnik *niz, int vel)
  89. {
  90. int brojac = 0;
  91. for (int i = 0; i < vel; i++)
  92. {
  93. //if (strlen(niz[i].spol) == 6)
  94. if(strcmp(niz[i].spol,"zensko")==0)
  95. brojac++;
  96.  
  97. }
  98. return brojac;
  99. }
  100.  
  101. void kopiraj_zene(radnik *niz, radnik *zene, int vel)
  102. {
  103. int indeks = 0;
  104. for (int i = 0; i < vel; i++)
  105. {
  106. //if (strlen(niz[i].spol) == 6)
  107. if(strcmp(niz[i].spol,"zensko")==0)
  108. zene[indeks++] = niz[i];
  109.  
  110. }
  111.  
  112. }
  113.  
  114. radnik * najduze_prezime(radnik *niz, int vel)
  115. {
  116. int naj = strlen(niz[0].prezime), indeks = 0;
  117. for (int i = 0; i < vel; i++)
  118. {
  119. if (strlen(niz[i].prezime) > naj)
  120. {
  121. naj = strlen(niz[i].prezime);
  122. indeks = i;
  123. }
  124. }
  125. return &niz[indeks];
  126.  
  127. }
  128.  
  129. void pretraga_po_imenu(radnik *niz, char *ime, int vel)
  130. {
  131. int br = 0;
  132. for (int i = 0; i < vel; i++)
  133. {
  134. if (strcmp(niz[i].ime, ime)==0)
  135. {
  136. br++;
  137. cout << "Nadjen radnik sa trazenim imenom:" << endl;
  138. ispis(niz+i);
  139. }
  140. }
  141.  
  142. if (br <= 0)
  143. cout << "Trazeno ime ne postoji" << endl;
  144.  
  145.  
  146.  
  147. }
  148.  
  149. double prihodi(radnik *niz, int IB, int vel)
  150. {
  151. double suma = 0;
  152. for (int i = 0; i < vel; i++)
  153. {
  154. if (niz[i].ib == IB)
  155. {
  156. for (int j = 0; j < 12; j++)
  157. {
  158. suma += niz[i].dohodak[j];
  159.  
  160. }
  161. suma += niz[i].staz*0.06;
  162. }
  163. }
  164. return suma;
  165. }
  166. int main()
  167. {
  168. int vel, brZena = 0, ib;
  169. cout << "Unesite velicinu niza" << endl;
  170. cin >> vel;
  171. radnik *niz = new radnik[vel];
  172. unos(niz, vel);
  173.  
  174. for (int i = 0; i < vel; i++)
  175. {
  176. ispis(niz+i);
  177. }
  178. brZena = prebroji_zene(niz, vel);
  179. cout << "Broj zena je: " << brZena << endl;
  180.  
  181. radnik *nizZena = new radnik[brZena];
  182. kopiraj_zene(niz, nizZena, vel);
  183.  
  184. cout << "Obiljezja zena:" << endl;
  185. for(int i=0; i<brZena; i++)
  186. ispis(nizZena+i);
  187.  
  188. cout << "Radnik sa najduzim prezimenom je:" << endl;
  189. ispis(najduze_prezime(niz, vel));
  190.  
  191. cout << "Unesite ime za koje zelite provjeriti da li postoji" << endl;
  192. char ime[20];
  193. cin.getline(ime,20);
  194. pretraga_po_imenu(niz, ime, vel);
  195.  
  196. cout << "Unesite IB radnika za kojeg' zelite izracunati godisnji prihod" << endl;
  197. cin >> ib;
  198. cout << "Godisnji prihod za unesenog radnika je:" << prihodi(niz, ib, vel) <<" KM"<<endl;
  199.  
  200. delete[]niz;
  201. delete[]nizZena;
  202. niz = nullptr;
  203. nizZena = nullptr;
  204.  
  205. system("pause");
  206. return 0;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement