Advertisement
Ahmet_Durmic

priprema

Apr 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. using namespace std;
  4. /*
  5. Napraviti strukturu student, char ime[20],char prezime[20] i unutar nje napraviti strukturu bodovi
  6. Alocirati memoriju za datu strukturu. Napraviti funkcije
  7. a)
  8. void unos(student *A,int a),
  9. void ispis(student *A,int a),
  10. b)napraviti rekturzivnu funkciju koja vraca broj studenata ciji je broj bodova veci od prosjecnog
  11. int (student *A,int a)
  12. c)napraviti novi niz u kojem su smjesteni samo studenti ciji je prosjek veci od prosjecnog
  13. void (stduent *A,student *B,int a), te ispisi novi niz studenata
  14. d)ispisati studente na osnovu ostvarenog broja bodova (od vecega ka manjem)
  15. e)dealocirati memoriju i izvrsiti provjeru
  16.  
  17.  
  18. */
  19.  
  20. float s=0;
  21. float as;
  22. int br=0;
  23. struct bodovi{
  24.     float  y;
  25. };
  26.  
  27. struct student{
  28.     char ime[20];
  29.     char prezime[20];
  30.     bodovi x;
  31. };
  32.  
  33. void unesi(student *A,int a){
  34.     for(int i=0;i<a;i++){
  35.         cout<<"Unesite podatke o "<<i+1<<". studentu:\n";
  36.         cout<<"Unesite ime: ";cin>>(A+i)->ime;
  37.         cout<<"Unesite prezime: ";cin>>(A+i)->prezime;
  38.         cout<<"Unesite bodove: ";cin>>(A+i)->x.y;
  39.         s+=(A+i)->x.y;
  40.         cout<<endl;
  41.     }
  42.     as=s/a;
  43.     cout<<endl;
  44. }
  45.  
  46. void ispisi(student *A,int a){
  47.     for(int i=0;i<a;i++){
  48.         cout<<(A+i)->ime<<" "<<(A+i)->prezime<<" ["<<(A+i)->x.y<<"] Bodova "<<endl;
  49.     }
  50. }
  51.  
  52. int vrati_broj_vecih(student *A,int a){
  53.     if(a==-1){
  54.         return br;
  55.     }else{
  56.         if((A+a)->x.y>as){
  57.             br++;
  58.             vrati_broj_vecih(A,a-1);
  59.         }else{
  60.             vrati_broj_vecih(A,a-1);
  61.         }
  62.     }
  63. }
  64. void nova_struktura(student *A,student *B,int a){
  65.     int j=0;
  66.     for(int i=0;i<a;i++){
  67.         if((A+i)->x.y>as){
  68.             *(B+j)=*(A+i);
  69.             j++;
  70.         }
  71.     }
  72. }
  73. void zamijeni(student *A,student *B){
  74.     student temp;
  75.     temp=*A;
  76.     *A=*B;
  77.     *B=temp;
  78. }
  79. void sortiraj(student *A,int a){
  80.     for(int i=0;i<a-1;i++){
  81.         for(int j=0;j<a-1;j++){
  82.             if((A+j)->x.y>(A+j)->x.y){
  83.                 zamijeni((A+j),(A+j+1));
  84.             }
  85.         }
  86.     }
  87.     ispisi(A,a);
  88. }
  89. void oslobodi_memoriju(student *A,int a){
  90.     for(int i=0;i<a;i++){
  91.         delete [] (A+i);
  92.     }
  93.     delete [] A;
  94.     //Ako program ispise bilo sta, memorija nije dobro oslobodena
  95.     ispisi(A,a);
  96. }
  97.  
  98. int main(){
  99.    
  100.     int n;
  101.     cout<<"Unesite broj studenata: ";
  102.     cin>>n;
  103. cout<<endl;
  104.     student *s=new student[n];
  105.     unesi(s,n);
  106.     int m=vrati_broj_vecih(s,n);
  107.     student *iznad_prosjeka=new student[m];
  108.     nova_struktura(s,iznad_prosjeka,n);
  109.     ispisi(iznad_prosjeka,m);
  110. cout<<endl;
  111.     sortiraj(s,n);
  112.  
  113.     oslobodi_memoriju(s,n);
  114.     return 0;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement