Advertisement
Guest User

Untitled

a guest
Aug 18th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3. using namespace std;
  4.  
  5. struct Ucenik {
  6.     char * ime;
  7.     char * prezime;
  8.     char spol[10];
  9.     int ocjene[5];
  10.     char JMBG[14];
  11. };
  12.  
  13. void unos(Ucenik *u) {
  14.     cout << "Ime Ucenika: " << endl;
  15.     u->ime = new char[20];
  16.     cin.getline(u->ime, 20);
  17.     cout << "Prezime Ucenika: " << endl;
  18.     u->prezime = new char[20];
  19.     cin.getline(u->prezime, 20);
  20.     cout << "Unesite spol: " << endl;
  21.     cin.getline(u->spol, 10);
  22.     cout << "Unesi ocjene: " << endl;
  23.     for (int i = 0; i < 5; i++)
  24.     {
  25.         cin >> u->ocjene[i];
  26.     }
  27.     cin.ignore();
  28.     cout << "Unesi JMBG: " << endl;
  29.     cin.getline(u->JMBG, 14);
  30. }
  31.  
  32. void ispis(Ucenik *u) {
  33.     cout << u->ime << " " << u->prezime << "/" << u->spol << endl;
  34.     cout << "Ocjene" << endl;
  35.     for (int i = 0; i < 5; i++)
  36.     {
  37.         cout << " " << u->ocjene[i];
  38.     }
  39.     cout << endl << "JMBG: " << u->JMBG << endl;
  40. }
  41.  
  42. Ucenik *najduzePrezime(Ucenik *u, int vel) {
  43.     int duzina = INT_MIN;
  44.     int index = -1;
  45.     for (int i = 0; i < vel; i++)
  46.     {
  47.         int duzinaPrezimena = strlen(u[i].prezime);
  48.         if (duzina < duzinaPrezimena) {
  49.             duzina = duzinaPrezimena;
  50.             index = i;
  51.         }
  52.     }
  53.  
  54.     return &u[index];
  55. }
  56.  
  57. void SlovaMir(Ucenik *u, int vel) {
  58.     for (int i = 0; i < vel; i++)
  59.     {
  60.         if (strstr(u[i].ime, "mir")) {
  61.             ispis(&u[i]);
  62.         }
  63.     }
  64. }
  65.  
  66. float Prosjecna(Ucenik *u) {
  67.     float suma = 0;
  68.     for (int i = 0; i < 5; i++)
  69.     {
  70.         suma += u->ocjene[i];
  71.     }
  72.     return suma / 5;
  73. }
  74.  
  75. void sortiraj(Ucenik *&u, int vel) {
  76.     Ucenik temp;
  77.     for (int i = 0; i < vel; i++)
  78.     {
  79.         for (int j = i + 1; j < vel; j++)
  80.         {
  81.             if (Prosjecna(&u[i]) < Prosjecna(&u[j])) {
  82.                 temp = u[i];
  83.                 u[i] = u[j];
  84.                 u[j] = temp;
  85.             }
  86.         }
  87.     }
  88. }
  89.  
  90. //void Zamjena(Ucenik *u, int vel) {
  91. //  for (int i = 0; i < vel; i++) {
  92. //      int duzina = strlen(u[i].ime) + 1;
  93. //      for (int j = 0; j < duzina; j++)
  94. //      {
  95. //          if (isupper(u[i].ime[j]))
  96. //              u[i].ime[j] = tolower(u[i].ime[j]);
  97. //          else
  98. //              u[i].ime[j] = toupper(u[i].ime[j]);
  99. //      }
  100. //  }
  101. //}
  102.  
  103. void Zamjena(Ucenik *&u, int vel) {
  104.     for (int i = 0; i < vel; i++) {
  105.         for (int j = 0; j < strlen(u[i].ime); j++) {
  106.             if (isupper(u[i].ime[j]))
  107.                 u[i].ime[j] = tolower(u[i].ime[j]);
  108.             else
  109.                 u[i].ime[j] = toupper(u[i].ime[j]);
  110.  
  111.         }
  112.     }
  113. }
  114.  
  115. int vokali(Ucenik u) {
  116.     int brojac = 0;
  117.     for (int i = 0; i < strlen(u.prezime); i++)
  118.     {
  119.         if (u.prezime[i] == 'a' || u.prezime[i] == 'A' ||
  120.             u.prezime[i] == 'e' || u.prezime[i] == 'E' ||
  121.             u.prezime[i] == 'i' || u.prezime[i] == 'I' ||
  122.             u.prezime[i] == 'o' || u.prezime[i] == 'O' ||
  123.             u.prezime[i] == 'u' || u.prezime[i] == 'U')
  124.             brojac++;
  125.     }
  126.     return brojac;
  127. }
  128.  
  129. Ucenik *pretragaIme(Ucenik *u, int vel, char * zeljenoIme) {
  130.     for (int i = 0; i < vel; i++)
  131.     {
  132.         if (strcmp(u[i].ime, zeljenoIme) == 0)
  133.             return &u[i];
  134.     }
  135.     return nullptr;
  136. }
  137.  
  138. Ucenik *pretragaPrezime(Ucenik *u, int vel, char * zeljenoPrezime) {
  139.     for (int i = 0; i < vel; i++)
  140.     {
  141.         if (strcmp(u[i].prezime, zeljenoPrezime) == 0)
  142.             return &u[i];
  143.     }
  144.     return nullptr;
  145. }
  146. Ucenik *pretragaJMBG(Ucenik *u, int vel) {
  147.     cout << endl << "Ucenici sa JMBG koji pocninje sa 3" << endl;
  148.     for (int i = 0; i < vel; i++)
  149.     {
  150.         if (u[i].JMBG[0] == '3')
  151.             ispis(&u[i]);
  152.     }
  153.     return nullptr;
  154. }
  155.  
  156. void dealociraj(Ucenik *& u, int vel) {
  157.     for (int i = 0; i < vel; i++)
  158.     {
  159.         delete[]u[i].ime;
  160.         delete[]u[i].prezime;
  161.         u[i].ime = nullptr;
  162.         u[i].prezime = nullptr;
  163.     }
  164.     delete[]u;
  165.     u = nullptr;
  166. }
  167.  
  168.  
  169. void main() {
  170.     int vel;
  171.     cout << "Unesi broj ucenika: " << endl;
  172.     cin >> vel;
  173.     cin.ignore();
  174.     Ucenik* niz = new Ucenik[vel];
  175.     cout << "Unesi podatke za ucenike: " << endl;
  176.     for (int i = 0; i < vel; i++)
  177.     {
  178.         unos(&niz[i]);
  179.     }
  180.     for (int i = 0; i < vel; i++)
  181.     {
  182.         ispis(&niz[i]);
  183.     }
  184.     cout << "Ucenik sa najduzim prezimenom" << endl;
  185.     Ucenik *pok = najduzePrezime(niz, vel);
  186.     ispis(pok);
  187.     cout << "Ucenici koji imaju mir u imenu" << endl;
  188.     SlovaMir(niz, vel);
  189.     cout << endl << "Prosjecne ocjene: " << endl;
  190.     for (int i = 0; i < vel; i++)
  191.     {
  192.         cout << "Prosjecna ocjena za " << i + 1 << " ucenika je: " << Prosjecna(&niz[i]) << endl;
  193.     }
  194.  
  195.     cout << "Sortirano: " << endl;
  196.     sortiraj(niz, vel);
  197.     for (int j = 0; j < vel; j++)
  198.     {
  199.         ispis(&niz[j]);
  200.     }
  201.     cout << "Zamjena slova: " << endl;
  202.     Zamjena(niz, vel);
  203.     for (int i = 0; i < vel; i++)
  204.     {
  205.         cout << endl;
  206.         cout << niz[i].ime;
  207.     }
  208.  
  209.     for (int i = 0; i < vel; i++)
  210.     {
  211.         cout << endl <<"Broj vokala u prezimenu za ucenika " << i + 1 << " je: " << vokali(niz[i]) << endl;
  212.     }
  213.    
  214.     char ime[20];
  215.     cout << "Unesi trazeno ime: " << endl;
  216.     cin.getline(ime, 20);
  217.     Ucenik *pokIme = pretragaIme(niz, vel, ime);
  218.     if (pokIme != nullptr)
  219.         ispis(pokIme);
  220.     char prezime[20];
  221.     cout << "Unesi trazeno prezime: " << endl;
  222.     cin.getline(prezime, 20);
  223.     Ucenik *pokPrezime = pretragaPrezime(niz, vel, prezime);
  224.     if (pokPrezime != nullptr)
  225.         ispis(pokPrezime);
  226.     Ucenik *pokJMBG = pretragaJMBG(niz, vel);
  227.     if (pokJMBG != nullptr)
  228.         ispis(pokJMBG);
  229.     dealociraj(niz, vel);
  230.     system("pause > 0");
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement