Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- /*
- Napraviti strukturu student, char ime[20],char prezime[20] i unutar nje napraviti strukturu bodovi
- Alocirati memoriju za datu strukturu. Napraviti funkcije
- a)
- void unos(student *A,int a),
- void ispis(student *A,int a),
- b)napraviti rekturzivnu funkciju koja vraca broj studenata ciji je broj bodova veci od prosjecnog
- int (student *A,int a)
- c)napraviti novi niz u kojem su smjesteni samo studenti ciji je prosjek veci od prosjecnog
- void (stduent *A,student *B,int a), te ispisi novi niz studenata
- d)ispisati studente na osnovu ostvarenog broja bodova (od vecega ka manjem)
- e)dealocirati memoriju i izvrsiti provjeru
- */
- float s=0;
- float as;
- int br=0;
- struct bodovi{
- float y;
- };
- struct student{
- char ime[20];
- char prezime[20];
- bodovi x;
- };
- void unesi(student *A,int a){
- for(int i=0;i<a;i++){
- cout<<"Unesite podatke o "<<i+1<<". studentu:\n";
- cout<<"Unesite ime: ";cin>>(A+i)->ime;
- cout<<"Unesite prezime: ";cin>>(A+i)->prezime;
- cout<<"Unesite bodove: ";cin>>(A+i)->x.y;
- s+=(A+i)->x.y;
- cout<<endl;
- }
- as=s/a;
- cout<<endl;
- }
- void ispisi(student *A,int a){
- for(int i=0;i<a;i++){
- cout<<(A+i)->ime<<" "<<(A+i)->prezime<<" ["<<(A+i)->x.y<<"] Bodova "<<endl;
- }
- }
- int vrati_broj_vecih(student *A,int a){
- if(a==-1){
- return br;
- }else{
- if((A+a)->x.y>as){
- br++;
- vrati_broj_vecih(A,a-1);
- }else{
- vrati_broj_vecih(A,a-1);
- }
- }
- }
- void nova_struktura(student *A,student *B,int a){
- int j=0;
- for(int i=0;i<a;i++){
- if((A+i)->x.y>as){
- *(B+j)=*(A+i);
- j++;
- }
- }
- }
- void zamijeni(student *A,student *B){
- student temp;
- temp=*A;
- *A=*B;
- *B=temp;
- }
- void sortiraj(student *A,int a){
- for(int i=0;i<a-1;i++){
- for(int j=0;j<a-1;j++){
- if((A+j)->x.y>(A+j)->x.y){
- zamijeni((A+j),(A+j+1));
- }
- }
- }
- ispisi(A,a);
- }
- void oslobodi_memoriju(student *A,int a){
- for(int i=0;i<a;i++){
- delete [] (A+i);
- }
- delete [] A;
- //Ako program ispise bilo sta, memorija nije dobro oslobodena
- ispisi(A,a);
- }
- int main(){
- int n;
- cout<<"Unesite broj studenata: ";
- cin>>n;
- cout<<endl;
- student *s=new student[n];
- unesi(s,n);
- int m=vrati_broj_vecih(s,n);
- student *iznad_prosjeka=new student[m];
- nova_struktura(s,iznad_prosjeka,n);
- ispisi(iznad_prosjeka,m);
- cout<<endl;
- sortiraj(s,n);
- oslobodi_memoriju(s,n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement