Advertisement
neogz

PR1 - studenti - ispitni 5 slican

Sep 18th, 2014
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.98 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4. #include <iostream>
  5. using namespace std;
  6. char crt[] = { "\n----------------------------------\n" };
  7. // ispitni 5
  8. struct Datum{
  9.     int _dan;
  10.     int _mjesec;
  11.     int _godina;
  12.     void Unos(int d, int m, int g){
  13.         _dan = d;
  14.         _mjesec = m;
  15.         _godina = g;
  16.     }
  17.     void Ispis(){
  18.         cout << "DATUM [dd/mm/gggg] -> [" << _dan << "/" << _mjesec << "/" << _godina <<"]" <<endl;
  19.     }
  20. };
  21. struct PolozeniPredmet{
  22.     char * _naziv;
  23.     int _ocjena;
  24.     Datum _datumPolaganja;
  25.     void Unos(char *naziv, int ocjena, Datum datum){
  26.         _naziv = new char[strlen(naziv) + 1];
  27.         strcpy(_naziv, naziv);
  28.  
  29.         _ocjena = ocjena;
  30.         _datumPolaganja.Unos(datum._dan, datum._mjesec, datum._godina);
  31.     }
  32.     void Ispis(){
  33.         cout << "Naziv predmeta: " << _naziv << endl;
  34.         cout << "Ocjena: " << _ocjena << endl;
  35.         _datumPolaganja.Ispis();
  36.     }
  37.     void Dealokacija(){
  38.         delete[]_naziv;
  39.         _naziv = nullptr;
  40.     }
  41. };
  42. struct Student{
  43.     char * _imePrezime;
  44.     int _index;
  45.     PolozeniPredmet * Polozeni[40];
  46.     int _brojPolozenih;
  47.    
  48.     void Unos(char * imePrezime, int index){
  49.         _imePrezime = new char[strlen(imePrezime) + 1];
  50.         _index = index;
  51.         _brojPolozenih = 0;
  52.     }
  53.     void Ispis(){
  54.         cout << "Ime prezime: " << _imePrezime << endl;
  55.         cout << "Index:  " << _index << endl;
  56.         for (int i = 0; i < _brojPolozenih; i++)
  57.             Polozeni[i]->Ispis();
  58.     }
  59.     void AddPolozeni(char * naziv, int ocjena, Datum datum){
  60.         if (_brojPolozenih >= 40) { cout << "Nema dovoljno prostora!" << endl; return; }
  61.         Polozeni[_brojPolozenih] = new PolozeniPredmet;
  62.         Polozeni[_brojPolozenih]->Unos(naziv, ocjena, datum);
  63.         _brojPolozenih++;
  64.     }
  65.     int PretragaPoDatatumu(Datum datumPolaganja){
  66.         if (_brojPolozenih < 1){ cout << "Greska, nema polozenih predmeta." << endl; return 0; }
  67.         int brojac = 0;
  68.         for (int i = 0; i < _brojPolozenih; i++){
  69.             if (Polozeni[i]->_datumPolaganja._dan == datumPolaganja._dan &&Polozeni[i]->_datumPolaganja._mjesec == datumPolaganja._mjesec && Polozeni[i]->_datumPolaganja._godina == datumPolaganja._godina){
  70.                 Polozeni[i]->Ispis();
  71.                 brojac++;
  72.             }
  73.         }
  74.         return brojac;
  75.  
  76.     }
  77.     void PretragaPoNazivu(char * naziv){
  78.         if (_brojPolozenih < 1){ cout << "Greska, nema polozenih predmeta." << endl; return; }
  79.         for (int i = 0; i < _brojPolozenih; i++){  
  80.             if (strstr(Polozeni[i]->_naziv, naziv) != 0)
  81.                 cout << Polozeni[i]->_naziv << endl;
  82.         }
  83.     }
  84. };
  85. int PretragaPoProsjeku(Student * pok, int max){
  86.     // prebroji  vrati broj studenata koji imaju prosjek veci od zadatog
  87.     int brStudenata = 0;
  88.     float prosjek, rez=0;
  89.     cout << "Unesite prosjek za koji zelite izvrsiti pretragu: ";
  90.     cin >> prosjek;
  91.     cin.ignore();
  92.  
  93.     for (int i = 0; i <max; i++){
  94.         float s = 0;
  95.         for (int j = 0; j < pok[i]._brojPolozenih; j++){
  96.             s += pok[i].Polozeni[j]->_ocjena;
  97.         }
  98.         rez = s / pok[i]._brojPolozenih;
  99.         if (rez >= prosjek) brStudenata++;
  100.     }
  101.     return brStudenata;
  102. }
  103. int main(){
  104.     int koliko;
  105.     cout << "Koliko studenata zelite: ";
  106.     cin >> koliko;
  107.     cin.ignore();
  108.  
  109.     Student * niz = new Student[koliko];
  110.     for (int i = 0; i < koliko; i++){
  111.         cout << "\nUnesite ime i prezime studenta: ";
  112.         char temp[30];
  113.         cin.getline(temp, 30);
  114.  
  115.         int index;
  116.         cout << "Unesite broj indexa: ";
  117.         cin >> index;
  118.         cin.ignore();
  119.  
  120.         niz[i].Unos(temp, index);
  121.         for (int j = 0; j < 2; j++){
  122.             cout << "\nUnesite naziv polozenog predmeta: ";
  123.             char temp[30];
  124.             cin.getline(temp, 30);
  125.  
  126.             int ocjena;
  127.             cout << "Unesite ocjenu: ";
  128.             cin >> ocjena;
  129.             cin.ignore();
  130.  
  131.             cout << "Unesite datum [dd/mm/gggg]: ";
  132.             int m, g, d;
  133.             cin >> d >> m >> g;
  134.             cin.ignore();
  135.             Datum da;
  136.             da.Unos(d,m,g);
  137.             niz[i].AddPolozeni(temp, ocjena, da);
  138.         }
  139.  
  140.     }
  141.     int pretraga = PretragaPoProsjeku(niz, koliko);
  142.     cout << pretraga << " studenata ima veci prosjek od zadanog!" << endl << endl;
  143.     //dealociranje
  144.     for (int i = 0; i < koliko; i++){
  145.         for (int j = 0; j < niz[i]._brojPolozenih; j++){
  146.             niz[i].Polozeni[j]->Dealokacija();
  147.         }
  148.         delete[] niz[i]._imePrezime;
  149.     }
  150.  
  151.     system("pause > null");
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement