Advertisement
neogz

PR1 - studenti, predmeti

Sep 16th, 2014
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. #ifdef _MSC_VER
  2.     #define _CRT_SECURE_NO_WARNINGS
  3.     #endif
  4.     #include <iostream>
  5.     using namespace std;
  6.  
  7.     struct Predmet{
  8.         char * _naziv;
  9.         int _ocjena;
  10.         //---
  11.         void Unos(char * naziv, int ocjena){
  12.             _naziv = new char[strlen(naziv + 1)];
  13.             strcpy(_naziv, naziv);
  14.             _ocjena = ocjena;
  15.         }
  16.         void Ispis(){
  17.             cout << "Naziv: " << _naziv << endl;
  18.             cout << "Ocjena: " << _ocjena << endl;
  19.         }
  20.         void Dealociraj(){
  21.             delete[]_naziv;
  22.             _naziv = nullptr;
  23.         }
  24.     };
  25.     struct Student{
  26.         char * _imePrezime;
  27.         int _index;
  28.         Predmet _polozeni[40];
  29.         int _brojPolozenih;
  30.         // -------
  31.         void Unos(char *imePrezime, int index){
  32.             _imePrezime = new char[strlen(imePrezime + 1)];
  33.             strcpy(_imePrezime, imePrezime);
  34.             _index = index;
  35.             _brojPolozenih = 0;
  36.         }
  37.         void Ispis(){
  38.             cout << "Ime i prezime studenta: " << _imePrezime << endl;
  39.             cout << "Broj indexa: " << _index << endl;
  40.             for (int i = 0; i < _brojPolozenih; i++)
  41.                 _polozeni[i].Ispis();
  42.         }
  43.         void Dealociraj(){
  44.             delete[]_imePrezime;
  45.             for (int i = 0; i < _brojPolozenih; i++)
  46.                 _polozeni[i].Dealociraj();
  47.             _imePrezime = nullptr;
  48.         }
  49.     };
  50.     bool DodajPolozeni(Student * student, char * predmet, int ocj){
  51.         if (student->_brojPolozenih < 40){
  52.             student->_polozeni[student->_brojPolozenih]._naziv = new char[strlen(predmet + 1)];
  53.             strcpy(student->_polozeni[student->_brojPolozenih]._naziv, predmet);
  54.             student->_polozeni[student->_brojPolozenih]._ocjena = ocj;
  55.  
  56.             (student->_brojPolozenih)++;
  57.             return true;
  58.         }
  59.         return false;
  60.     }
  61.     void UkloniPredmet(Student * student){
  62.         if (student->_brojPolozenih == 0){
  63.             cout << "Student nema polozenih predmeta! " << endl;
  64.             return;
  65.         }
  66.  
  67.         for (int i = 0; i < student->_brojPolozenih; i++)
  68.             student->_polozeni[i].Ispis();
  69.  
  70.         int izbor;
  71.         do{
  72.             cout << "Izaberite predmet za uklananje: ";
  73.             cin >> izbor;
  74.             cin.ignore();
  75.         } while (izbor <0 && izbor > student->_brojPolozenih);
  76.  
  77.         for (int i = izbor; i < student->_brojPolozenih; i++){
  78.             student->_polozeni[i].Unos(student->_polozeni[i]._naziv, student->_polozeni[i]._ocjena);
  79.         }
  80.         (student->_brojPolozenih)--;
  81.     }
  82.     Predmet * PretragaPoOcjeni(Student * student, int ocjena){
  83.         if (student->_brojPolozenih == 0) cout << "Greska!" << endl;
  84.         else{
  85.             for (int i = 0; i < student->_brojPolozenih; i++){
  86.                 if (student->_polozeni[i]._ocjena == ocjena){
  87.                     Predmet * temp = new Predmet;
  88.                     temp->Unos(student->_polozeni[i]._naziv, student->_polozeni[i]._ocjena);
  89.                     return temp;
  90.                 }
  91.             }
  92.             cout << "Nije pronadjen predmet sa trazenom ocjenom." << endl;
  93.         }
  94.     }
  95.     bool ProvjeriIndex(Student * student, int brojIndexa, int max){
  96.         for (int i = 0; i < max; i++) if (student[i]._index == brojIndexa) return true;
  97.         return false;
  98.     }
  99.     int main(){
  100.         //  Unutar main funkcije napisati sljedeće:
  101.         //U dinamičkoj memoriji kreirati niz od 3 objekta tipa Student.
  102.         //Korisniku omogućiti da unese ime, prezime i broj indeksa (uz provjeru) za svakog od studenata.
  103.         /*Ukoliko je broj indeksa već zauzet, program treba korisniku omogućiti ponovni unos indeksa za tog studenta.*/
  104.         //Koristeći funkcije DodajPolozeni, prvom studentu dodati informacije o dva položena predmeta,
  105.         /*a drugom studentu o jednom položenom predmetu*/
  106.  
  107.         Student * niz = new Student[3];
  108.         for (int i = 0; i < 3; i++)
  109.         {
  110.             char * tekst = new char[25];
  111.             cout << "Unesite ime i prezime studenta: ";
  112.             cin.getline(tekst, 25);
  113.  
  114.             int index;
  115.             do
  116.             {
  117.                 cout << "Unesite broj indexa: ";
  118.                 cin >> index;
  119.                 cin.ignore();
  120.                 niz[i].Unos(tekst, index);
  121.             } while (ProvjeriIndex(niz, index, i));
  122.         }
  123.        
  124.         DodajPolozeni(&niz[0], "Matematika", 7);
  125.         DodajPolozeni(&niz[0], "Ekonomija", 8);
  126.         DodajPolozeni(&niz[1], "UIT", 8);
  127.  
  128.         UkloniPredmet(&niz[0]);
  129.  
  130.  
  131.  
  132.  
  133.  
  134.         system("pause > null");
  135.         return 0;
  136.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement