Ahmet_Durmic

kviz_klase_final

May 19th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.25 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. //Ahmet Durmic
  8. //Harun Kaknjo
  9.  
  10. enum godstud{PRVA=1,DRUGA,TRECA};
  11. enum nacstud{VANREDAN=0,REDOVAN};
  12. enum odg{NETACNO=0,TACNO};
  13.  
  14. int brpitanja=10;
  15. int enuminputpitanje;
  16.  
  17. class Pitanja{
  18.     public:
  19.         Pitanja(){
  20.             for(int i=1;i<=brpitanja;i++){
  21.             if(i==1){
  22.                 pitanja[i]="Da li je tacno da se prilikom kreiranja dinamicnog objekta, treba po pravilu memorija dealocirati unutar destruktora? ";
  23.                
  24.                 }
  25.             else if(i==2){
  26.                 pitanja[i]="Da li je moguce u programskom jeziku C++ koristiti long int varijable?";
  27.  
  28.             }
  29.             else if(i==3){
  30.                 pitanja[i]="Da li se za racunanje duzine STRINGA koristi genericka funkcija strlen iz built-in bibilioteke cstring?";
  31.  
  32.             }
  33.             else if(i==4){
  34.                 pitanja[i]="Biblioteka iostream u sebi sadrzi funckije za ispis?";
  35.  
  36.             }
  37.             else if(i==5){
  38.                 pitanja[i]="Lamda funckije je moguce koristiti u svakom od standarda C++?";
  39.  
  40.             }
  41.             else if(i==6){
  42.                 pitanja[i]="Da li su sljedece relacije ekvialentne: (s+i)->Pokazivac==s[i].Pokazivac ?";
  43.  
  44.             }
  45.             else if(i==7){
  46.                 pitanja[i]="Isto memorije se zauzme proslijedivanjem u argument funkcije reference i vrijednosti?";
  47.  
  48.             }
  49.             else if(i==8){
  50.                 pitanja[i]="Memoizacijom se vrsi izbacivanje duplikata iz vektorski sortiranog niza ?";
  51.  
  52.             }
  53.             else if(i==9){
  54.                 pitanja[i]="Za ispisivanje dinamicki alocirane memorije nije potrebno derefenrecencirati pokazivac?";
  55.  
  56.             }
  57.             else if(i==10){
  58.                 pitanja[i]="Kada se kompajlira program on se nalazi i pokrece u RAMu?";
  59.    
  60.             }
  61.         }
  62.     }
  63.     odg provjera(int brpitanja);
  64.     odg provjera2(int brpitanja,int i,int enuminput);
  65.     void pokreni_test(){
  66.         int enuminput;
  67.         for(int i=1;i<=brpitanja;i++){
  68.             cout<<i<<". "<<pitanja[i]<<endl;
  69.             cout<<"(0-NETACNO,1 TACNO): ";
  70.             cin>>enuminput;cin.clear();cin.ignore(10000,'\n');
  71.             while(!enuminput||enuminput<0||enuminput>1){
  72.                 cout<<"Pogresan unos!\nUnesite odgovor na pitanje: ";cin>>enuminput;
  73.                 cin.clear();cin.ignore(10000,'\n');
  74.             }
  75.             odg1[i]=(odg)enuminput;
  76.         }  
  77.     }
  78.     void ispisi_rezultat(){
  79.         int br=0;
  80.         for(int i=1;i<=brpitanja;i++){
  81.             if(odg1[i]==provjera(i)||odg1[i]==provjera2(brpitanja,i,enuminputpitanje)){
  82.                 br++;
  83.             }
  84.         }
  85.         cout<<br<<endl;
  86.     }
  87.     void dodaj();
  88.        
  89.     private:
  90.         string pitanja[100];
  91.         odg odg1[100];
  92. };
  93. odg Pitanja::provjera(int brPitanja){
  94.     if(brPitanja==1){
  95.         return TACNO;
  96.     }
  97.     else if(brPitanja==2){
  98.         return TACNO;
  99.     }
  100.     else if(brPitanja==3){
  101.         return NETACNO;
  102.     }
  103.     else if(brPitanja==4){
  104.         return NETACNO;
  105.     }
  106.     else if(brPitanja==5){
  107.         return NETACNO;
  108.     }
  109.     else if(brPitanja==6){
  110.         return TACNO;
  111.     }
  112.     else if(brPitanja==7){
  113.         return NETACNO;
  114.     }
  115.     else if(brPitanja==8){
  116.         return NETACNO;
  117.     }
  118.     else if(brPitanja==9){
  119.         return NETACNO;
  120.     }
  121.     else if(brPitanja==10){
  122.         return TACNO;
  123.     }
  124. }
  125. odg Pitanja::provjera2(int dodanopitanje,int brpitanja,int input){
  126.     if(brpitanja==dodanopitanje){
  127.         if(enuminputpitanje==1){
  128.             return TACNO;
  129.         }else{
  130.             return NETACNO;
  131.         }
  132.     }
  133. }
  134.  
  135. void Pitanja::dodaj(){
  136.     brpitanja++;int i;
  137.     char tekstpitanja[100];
  138.     cout<<"Unesite pitanje koje zelite dodati: ";
  139.     cin.getline(tekstpitanja,100);
  140.     pitanja[brpitanja]=tekstpitanja;
  141.     cout<<"Unesite tacan odgovor za uneseno pitanje(0-NETACNO, 1-TACNO): ";cin>>enuminputpitanje;
  142.     provjera2(brpitanja,brpitanja,enuminputpitanje);
  143. }
  144.  
  145. class Student{
  146.     public:
  147.         Pitanja P;
  148.         Student(string ip_val="NO NAME"):
  149.             imeprezime{ip_val}{/*cout<<"Constructor is called !"<<endl;*/}
  150.         Student(const Student &izvor):
  151.             imeprezime{izvor.imeprezime}{cout<<"Copy constructor is called"<<endl;}
  152.         ~Student(){/*cout<<"Deconstuctor is called ! "<<endl;*/}
  153.         void unesi(){
  154.             int enuminput;
  155.             int enuminput1;
  156.             cout<<"Unesite ime i prezime studenta: ";getline(cin,imeprezime);
  157.             cout<<"Unesite godinu studija(1,2,3): ";cin>>enuminput;cin.clear();cin.ignore(10000,'\n');
  158.             godstud1=(godstud)enuminput;
  159.             cout<<"Unesite nacin studiranja(0-VANREDAN, 1-REDOVAN): ";cin>>enuminput1;cin.clear();cin.ignore(10000,'\n');
  160.             nacstud1=(nacstud)enuminput1;
  161.         }
  162.         void ispisi(){
  163.             cout<<imeprezime<<endl;
  164.         }
  165.        
  166.         void pokreni_test(Student s[],int rb);
  167.         void prikazi_rezultate_testa(Student s[],int rb);
  168.        
  169.        
  170.     private:
  171.         string imeprezime;
  172.         bool radioTest=false;
  173.         godstud godstud1;
  174.         nacstud nacstud1;
  175. };
  176.  
  177. void intro(){
  178.     cout<<"===============================================\n";
  179.     cout<<"Dobrodosli, u prilugu se nalazi mali kviz kojim\n";
  180.     cout<<"mozete testirati svoje znanje iz predmeta \n";
  181.     cout<<"Napredne tehnike programiranja. Na ponudena \n";
  182.     cout<<"pitanja odgovarate na sljedeci nacin.\nUnosi se 0 za NETACNO a ";
  183.     cout<<"1 za TACNO.\n";
  184.     cout<<"3 tacna odgovora  :(\n";
  185.     cout<<"5 tacnih odgovora  -.-\n";
  186.     cout<<"7 tacnih odgovora :)\n";
  187.     cout<<"9 ili vise tacnih odgovora :DDDDD\n";
  188.     cout<<"                   SRETNO\n";
  189.     cout<<"===============================================\n";
  190.     system("pause");
  191.     system("cls");
  192. }  
  193.  
  194. int menu(){
  195.     int izbor;
  196.     do{
  197.         cout<<"===================================================\n";
  198.         cout<<"\t\t\tMENU\n";
  199.         cout<<"===================================================\n";
  200.         cout<<"\t   0)  Ispis unesenih studenata\n";
  201.         cout<<"\t   1)  Pokreni test\n";
  202.         cout<<"\t   2)  Ispisi rezultate testa\n";
  203.         cout<<"\t   3)  Dodaj studenta\n";
  204.         cout<<"\t   4)  Dodaj pitanje\n";
  205.         cout<<"\t   5)  Kraj\n";
  206.         cout<<"===================================================\n";
  207.         cout<<"Unesite izbor: ";cin>>izbor;cin.clear();cin.ignore(10000,'\n');
  208.         return izbor;
  209.         system("pause");
  210.         system("cls");
  211.     }while(izbor>-1||izbor<5);
  212. }
  213.  
  214.  
  215.  
  216. void Student::pokreni_test(Student s[],int rb){
  217.     int odgovor;
  218.         if(s[rb].radioTest){
  219.             cout<<"Student "<<s[rb].imeprezime<<" je vec radio test! "<<endl;
  220.         }else{
  221.             s[rb].P.pokreni_test();
  222.             s[rb].radioTest=true;
  223.         }  
  224.  
  225. }
  226.  
  227. void Student::prikazi_rezultate_testa(Student s[],int rb){
  228.     int br=0;
  229.     if(s[rb].radioTest){
  230.         cout<<"Student "<<s[rb].imeprezime<<" je od ukupnih "<<brpitanja<<" pitanja, tacno odgovorio na ";s[rb].P.ispisi_rezultat();cout<<" pitanja "<<endl;
  231.     }else{
  232.         cout<<"Student "<<s[rb].imeprezime<<" nije radio test, odaberite prvo opciju 1! "<<endl;
  233.     }    
  234. }
  235.  
  236. int main(){
  237.    
  238.     intro();
  239.     int n=100;
  240.     int brStudenata=1;int izbor;
  241.     Student s[n];
  242.     for(int i=0;i<brStudenata;i++){
  243.         cout<<"Unesite svoje podatke\n";
  244.         s[i].unesi();
  245.         system("pause");
  246.         system("cls");
  247.     }
  248.    
  249.     do{
  250.         izbor=menu();
  251.         if(izbor<0||izbor>4){
  252.             break;
  253.         }
  254.        
  255.         if(izbor==0){
  256.             for(int i=0;i<brStudenata;i++){
  257.                 cout<<i+1<<".";s[i].ispisi();
  258.             }
  259.             system("pause");
  260.             system("cls");
  261.         }
  262.        
  263.         if(izbor==1){
  264.             int rb;
  265.             for(int i=0;i<brStudenata;i++){
  266.                 cout<<i+1<<".";s[i].ispisi();
  267.             }
  268.             cout<<"Unesite svoj redni broj za pokretanje testa: ";cin>>rb;cin.clear();cin.ignore(10000,'\n');
  269.             if(rb>brStudenata){
  270.                 cout <<"Ne postoji student sa tim rednim brojem"<<endl;
  271.                 system("pause");
  272.                 system("cls");
  273.             }else{
  274.                 rb=rb-1;
  275.                 s[rb].pokreni_test(s,rb);
  276.                 system("pause");
  277.                 system("cls");
  278.             }
  279.         }
  280.        
  281.         if(izbor==2){
  282.             int rb;
  283.             for(int i=0;i<brStudenata;i++){
  284.                 cout<<i+1<<".";s[i].ispisi();
  285.             }
  286.             cout<<"Unesite svoj redni broj za ispis rezultata testa: ";cin>>rb;cin.clear();cin.ignore(10000,'\n');
  287.             if(rb>brStudenata){
  288.                 cout <<"Ne postoji student sa tim rednim brojem! "<<endl;
  289.                 system("pause");
  290.                 system("cls");
  291.             }else{
  292.                 rb=rb-1;
  293.                 s[brStudenata].prikazi_rezultate_testa(s,rb);
  294.                 system("pause");
  295.                 system("cls");
  296.             }
  297.         }  
  298.        
  299.         if(izbor==3){
  300.             cout<<"Unesite svoje podatke\n";
  301.             s[brStudenata].unesi();
  302.             brStudenata++;
  303.             system("pause");
  304.             system("cls");
  305.         }
  306.        
  307.         if(izbor==4){
  308.             s[brStudenata].P.dodaj();
  309.             system("pause");
  310.             system("cls");
  311.         }
  312.        
  313.     }while(1);
  314.    
  315.     return 0;
  316. }
Add Comment
Please, Sign In to add comment