Advertisement
Guest User

vj10prgod

a guest
Jan 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.75 KB | None | 0 0
  1. // Antonio Ozegovic     41971
  2. #include <iostream>
  3. #include <typeinfo>
  4. #include <cstring>
  5. using namespace std;
  6. class cstudij {
  7. public:
  8.     cstudij *sljedeci;
  9.     virtual void unos() = 0;
  10.     virtual void ispis(bool x = false) = 0;
  11.     virtual int sifra(bool x) = 0;
  12. };
  13. //=== POČETAK ONO MALO ISPOD NJE ===
  14. int broj_predmeta = 0;
  15. int broj_prijava = 0;
  16. bool p = false;
  17. cstudij *lista;
  18. cstudij *_zadnji;
  19. class cpredmet;
  20. cpredmet *novip;
  21. class cprijava;
  22. cprijava *novap;
  23. //=== KRAJ ONO MALO ISPOD NJE ===
  24. class cpredmet : public cstudij {
  25. public:
  26.     int sPredmeta;
  27.     char naziv[35];
  28.     cpredmet() {
  29.         if (p)
  30.             cout << "Novi predmet!\n";
  31.         if (!p) p = true;
  32.     }
  33.     int sifra(bool x) {
  34.         if (x)
  35.             return sPredmeta;
  36.         else
  37.             cout << "Naziv predmeta: " << naziv << endl;
  38.         return -1;
  39.     }
  40.     void unos() {
  41.         broj_predmeta++;
  42.         novip->sljedeci = NULL;
  43.         cout << "\nSifra predmeta: ";
  44.         cin >> sPredmeta;
  45.         cstudij *s;
  46.         // U ovoj do while petlji paziti da svuda budu razmaci i da bude tocno tako prepisano
  47.         // Tocno prepisati kak je napisano
  48.         do
  49.             for (s = lista->sljedeci; s; s = s->sljedeci)
  50.                 if (s->sifra(true) == sPredmeta)
  51.                     break;
  52.         while (s && s->sifra(true) == sPredmeta && strcmp(typeid(*s).name(), "8cpredmet") == 0 && cout << "Sifra postoji, ponovni unos: " && cin >> sPredmeta);
  53.         cout << "Naziv Predmeta: ";
  54.         cin.ignore();
  55.         cin.getline(naziv, 35);
  56.         _zadnji->sljedeci = novip;
  57.         _zadnji = novip;
  58.     }
  59.     void ispis(bool x = false) {
  60.         cout << "\nSifra predmeta: " << sPredmeta <<
  61.             "\nNaziv Predmeta: " << naziv << endl;
  62.         if (x) cout << "==== POPIS PRIJAVA ====" << endl;
  63.         if (x) for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  64.             if (sPredmeta == s->sifra(true) && strcmp(typeid(*s).name(), "8cprijava") == 0)
  65.                 s->ispis();
  66.     }
  67.  
  68. };
  69. // Sve iznad ove linije prepisat za prvo testiranje
  70.  
  71. // Ovu klasu cprijava prepisati za drugo testiranje;
  72. class cprijava : public cstudij {
  73. public:
  74.     int sPrijave;
  75.     double mbStudenta;
  76.     int sPredmeta;
  77.     char rok[15];
  78.     cprijava() {
  79.         cout << "Nova prijava!\n";
  80.     }
  81.     int sifra(bool x) {
  82.         return sPredmeta;
  83.     }
  84.     void unos() {
  85.         broj_prijava++;
  86.         novap->sljedeci = NULL;
  87.         _zadnji->sljedeci = novap;
  88.         _zadnji = novap;
  89.         cout << "\nSifra prijave: ";
  90.         cin >> sPrijave;
  91.         cout << "Maticni broj studenta: ";
  92.         cin >> mbStudenta;
  93.         cout << "Sifra predmeta: ";
  94.         cin >> sPredmeta;
  95.         bool k = false;
  96.         // U ovoj do while petlji paziti da svuda budu razmaci i da bude tocno prepisano
  97.         // Tocno prepisati kak je napisano
  98.         do
  99.             for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  100.                 if (sPredmeta == s->sifra(true) && strcmp(typeid(*s).name(), "8cpredmet") == 0)
  101.                     k = true;
  102.         while (!k && cout << "Sifra ne postoji, ponovni unos: " && cin >> sPredmeta);
  103.  
  104.         cstudij *s;
  105.         for (s = lista->sljedeci; s; s = s->sljedeci)
  106.             if (s->sifra(true) == sPredmeta && strcmp(typeid(*s).name(), "8cpredmet") == 0)
  107.                 break;
  108.         s->sifra(false);
  109.         cout << "Rok: ";
  110.         cin.ignore();
  111.         cin.getline(rok, 15);
  112.     }
  113.     void ispis(bool x = false) {
  114.         cout << "\nSifra prijave: " << sPrijave <<
  115.             "\nMaticni broj studenta: " << mbStudenta <<
  116.             "\nSifra predmeta: " << sPredmeta <<
  117.             "\nRok: " << rok << endl;
  118.     }
  119. };
  120.  
  121. int main() {
  122.     //=== POČETAK VARIJABLE OD MAIN ===
  123.     int x;
  124.     int sifra;
  125.     char izbor;
  126.     //=== KRAJ VARIJABLE OD MAIN ===
  127.     //=== OVO PREPISATI POSLJE KLASE CPREDMET ===
  128.     lista = new cpredmet;
  129.     lista->sljedeci = NULL;
  130.     _zadnji = lista;
  131.     //=== OVO PREPISATI POSLJE KLASE CPREDMET ===
  132.     do {
  133.         //=== POČETAK ONO U NJEMU ===
  134.         izbor = 'x';
  135.         cout << "1. Unos predmeta/unos prijava/ispis predmeta i prijava\n" <<
  136.             "2. Ispis predmeta/ispis prijava (odvojeno)\n" <<
  137.             "3. Ispis liste prijava zadanog predmeta (prema sifri predmeta)\n" <<
  138.             "9. Izlaz" << endl;
  139.         cin >> x;
  140.         //=== KRAJ ONO U NJEMU ===
  141.         switch (x) {
  142.         case 1:
  143.             cout << "Trenutni broj elemenata liste: " << broj_predmeta + broj_prijava << endl;
  144.             cout << "Unos ili ispis(u/i): ";
  145.             cin >> izbor;
  146.             if (izbor == 'u' && cout << "Predmet(0) ili prijava(1): ") cin >> izbor;
  147.             if (izbor == 'i')
  148.                 for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  149.                     s->ispis();
  150.             if (izbor == '0') novip = new cpredmet;
  151.             if (izbor == '0') novip->unos();
  152.             // Ovo ispod do break ne prepisivati za prvo testiranje;
  153.             // ============== SVE ISPOD OVOGA U DRUGO TESTIRANJE ==============
  154.             if (izbor == '1' && broj_predmeta == 0 && cout << "Unos nije moguc!" << endl) break; // 2
  155.             if (izbor == '1') novap = new cprijava; // 2
  156.             if (izbor == '1') novap->unos(); // 2
  157.             break;
  158.             // Case 2 prepisivati za drugo testiranje
  159.         case 2:
  160.             cout << "Trenutni broj predmeta: " << broj_predmeta << endl
  161.                 << "Trenutni broj prijava : " << broj_prijava << endl;
  162.             cout << "Zelite li popis predmeta(0) ili prijava(1): ";
  163.             cin >> izbor;
  164.             for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  165.                 if (izbor == '0' && strcmp(typeid(*s).name(), "8cpredmet") == 0)
  166.                     s->ispis();
  167.                 else if (izbor == '1' && strcmp(typeid(*s).name(), "8cprijava") == 0)
  168.                     s->ispis();
  169.             break;
  170.             // Case 3 prepisivati za drugo testiranje
  171.         case 3:
  172.             cout << "Trenutni broj predmeta: " << broj_predmeta << endl
  173.                 << "Trenutni broj prijava : " << broj_prijava << endl;
  174.             if (broj_predmeta == 0 && cout << "Nema predmeta\n\n") break;
  175.             cout << "Unesite sifru predmeta: ";
  176.             cin >> sifra;
  177.             for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  178.                 if (s->sifra(true) == sifra && strcmp(typeid(*s).name(), "8cpredmet") == 0)
  179.                     s->sifra(false);
  180.             for (cstudij *s = lista->sljedeci; s; s = s->sljedeci)
  181.                 if (s->sifra(true) == sifra && strcmp(typeid(*s).name(), "8cprijava") == 0)
  182.                     s->ispis();
  183.             break;
  184.             // ============== SVE IZNAD OVOGA U DRUGO TESTIRANJE ==============
  185.         }
  186.     } while (x != 9);
  187.     system("pause");
  188.     return 0;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement