Advertisement
mdejkic

pr2 (ispitni) #1

Aug 22nd, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.08 KB | None | 0 0
  1. /*
  2. Napisati program sa opisanim funkcionalnostima*/
  3.  
  4. struct student {
  5.     char imePrezime[30];
  6.     char index[10];
  7.     int godinaStudija;
  8. };
  9.  
  10. void unos(student * pok) {
  11.     //vrsi inicijalizaciju svih vrijednosti atributa studenta na kojeg pokazuje
  12.     cout << "Unesite vrijednosti svih obiljezja" << endl;
  13.     cout << "Ime i prezime:" << endl;
  14.     cin.getline(pok->imePrezime, 29);
  15.     cout << "Indeks:" << endl;
  16.     cin.getline(pok->index, 9);
  17.     cout << "Godine studija:" << endl;
  18.     cin >> pok->godinaStudija;
  19.     cin.ignore();
  20. }
  21.  
  22. student * getPokazivac(student * pok, int max) {
  23.     //1. na samom pocetku funkcija ispisuje ime i prezime svakog studenta
  24.     //   koji se nalazi u nizu na kojeg pokazuje pokazivac
  25.     for (int i = 0; i < max; i++)
  26.         cout << i + 1 << ". student:" << endl << pok[i].imePrezime << endl;
  27.    
  28.     //2. korisnik unosi redni broj jednog od studenta cije ime i prezime
  29.     //   je ispisano, a na koga zeli kreirati pokazivac
  30.     int rb = 0;
  31.     cout << "Unesite redni broj:" << endl;
  32.     cin >> rb;
  33.  
  34.     //3. ukoliko je redni broj validan tj. ukoliko ne premasuje gornju i donju
  35.     //   granicu niza, funkcija vraca pokazivac na odabranog studenta
  36.     if (rb >= 1 || rb <= max){
  37.         rb--;
  38.         return &pok[rb];
  39.     }
  40.  
  41.     //4. ukoliko redni broj premasuje vrijednost niza funkcija vraca null
  42.     return NULL;
  43. }
  44.  
  45. void pretraga(student * pok, int max) {
  46.     //1. korisnik unosi broj indeksa studenta cije podatke pretrazuje
  47.     char indeks[10];
  48.     cout << "Unesi broj indeksa:" << endl;
  49.     bool pronadjen = false;
  50.     //2. funkcija vrsi pretragu, te ukoliko pronadje studenta sa unesenim brojem
  51.     //   indeksa ispisuje sve njegove podatke
  52.     cin.getline(indeks, 9);
  53.     for (int i = 0; i < max; i++) {
  54.         if (strcmp(pok[i].index, indeks)==0) {
  55.             cout << "Ime i prezime: " << pok[i].imePrezime << endl;
  56.             cout << "Broj indeksa: " << pok[i].index << endl;
  57.             cout << "Godina studija: " << pok[i].godinaStudija << endl;
  58.             pronadjen = true;
  59.         }
  60.     }
  61.  
  62.     //3. ukoliko student sa unesenim brojem indeksa ne postoji funkcija
  63.     //   treba da ispise odgovarajucu poruku
  64.     if (pronadjen=false)
  65.         cout << "Ne postoji student s unesenim brojem indeksa." << endl;
  66. }
  67.  
  68. void main() {
  69.     //1. korisniku omoguciti da odredi koliko objekata tipa student zeli kreirati
  70.     //   objekte kreirati u dinamickoj memoriji
  71.     int max = 0;
  72.     cout << "Koliko studenata zelite unijeti?" << endl;
  73.     cin >> max;
  74.     cin.ignore();
  75.     student * pok = new student[max];
  76.  
  77.     //2. korisniku omoguciti da inicijalizuje vrijednosti atributa svakog studenta
  78.     for (int i = 0; i < max; i++)
  79.         unos(&pok[i]);
  80.  
  81.     //3. korisniku omoguciti pretragu studenata
  82.     pretraga(pok, max);
  83.    
  84.     //4. kreirati pokazivac koji ce biti inicijalizovan vrijednoscu koju vrati
  85.     //   funkcija getPokazivac, ukoliko je moguce - preko kreiranog pokazivaca
  86.     //   ispisati podatke o tom studentu
  87.     student * vraceniPok = getPokazivac(pok, max);
  88.     if (vraceniPok != NULL) {
  89.         cout << "Ime i prezime: " << vraceniPok->imePrezime << endl;
  90.         cout << "Indeks: " << vraceniPok->index << endl;
  91.         cout << "Godina studija: " << vraceniPok->godinaStudija << endl;
  92.     }
  93.  
  94.     delete[] pok;
  95.     pok = NULL;
  96.     vraceniPok = NULL;
  97.     system("pause>0");
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement