Advertisement
elica123

Untitled

Aug 3rd, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. /* ZADATAK:(2 + 6 + 7 = 15 bodova) Elementi vezane liste trebaju sadržavati podatke o djeci jednog naselja, i to: ime (s
  2. najviše 25 znakova), te broj sličica nogometnih igrača koje su prikupili (prirodni broj).
  3. (a) Napišite definiciju tipa podatka za pojedini element liste, na način da bude moguće definirati varijable naredbom djeca
  4. item; i sl. Definirajte samo podatke koji su nužni za čuvanje takve liste u memoriji.
  5. (b) Napišite funkciju djeca* igra(djeca* first, char* dijete1, char* dijete2), gdje je first pokazivač na prvi
  6. element liste, a dijete1 je ime djeteta koje je u igri dobilo sve sličice djeteta dijete2. Igra se treba obaviti na
  7. način da se djetetu dijete1 pribroje sve sličice djeteta2, te da se obriše element vezane liste u kojem su spremljeni
  8. podaci djeteta dijete2. Ukoliko barem jedno dijete zadanog imena ne postoji u vezanoj listi, funkcija ne radi nikakvu
  9. promjenu u ulaznoj vezanoj listi. Funkcija vraća pokazivač na početak vezane liste.
  10. (c) Napišite funkciju djeca* najbolji(djeca** first) koja iz liste izdvaja najboljih 10% djece, na način da se formira
  11. nova vezana lista, u kojoj su ti elementi spremljeni (sortirani silazno po broju sličica), i vraća se pokazivač na početak
  12. nove vezane liste. first je pokazivač na pokazivač na početak (stare) vezane liste. Broj najboljih 10% djece odredi se
  13. tako da se uzme najveći cijeli broj djece manji ili jednak od 10% ukupnog broja djece, ukoliko je taj broj veći od 1,
  14. odnosno, 1, ukoliko je taj broj jednak 0. Ukoliko je ulazna lista prazna, funkcija ne radi nikakvu promjenu na ulaznoj
  15. vezanoj listi, a vraća NULL pokazivač. Ovdje nije dozvoljeno alocirati memoriju za nove elemente, već sve treba raditi
  16. s postojećim elementima vezane liste */
  17.  
  18. #include<stdio.h>
  19. #include<stdlib.h>
  20. #include<string.h>
  21.  
  22. typedef struct _djeca{
  23. char ime[26];
  24. int broj;
  25. struct _djeca* next;
  26. }djeca;
  27.  
  28. djeca* igra(djeca* first, char* dijete1, char* dijete2){
  29. int br=0;
  30. djeca* pom=first;
  31. djeca* temp;
  32. //provjera prvog
  33. if(strcmp(pom->ime, dijete2)==0){
  34. br=pom->broj;
  35. temp=first;
  36. first=first->next;
  37. free(temp);
  38. }
  39. while(pom->next){
  40. if(strcmp(dijete2, pom->next->ime)==0){
  41. br=pom->next->broj;
  42. temp=pom->next;
  43. pom->next=temp->next;
  44. free(temp);
  45. }
  46. pom=pom->next;
  47. }
  48. pom=first;
  49. while(pom){
  50. if(strcmp(dijete1, pom->ime)==0)
  51. pom->broj+=br;
  52. pom=pom->next;
  53. }
  54. return first;
  55. }
  56.  
  57. djeca* najbolji(djeca** first){
  58. djeca* pom=*first;
  59. djeca* temp;
  60. int br_djece=0;
  61. int br_boljih;
  62. while(pom){ //zanima me koliko je djece ukupno
  63. br_djece++;
  64. pom=pom->next;
  65. }
  66. pom=*first;
  67. djeca* pom2=*first;
  68. while(pom->next){ // za svako dijete gledam koliko je djece bolje od njega, prolazim po prethodnicima
  69. br_boljih=0;
  70. for(pom2=*first; pom2!=NULL; pom2=pom2->next){
  71. if((pom->next->broj)<(pom2->broj))
  72. br_boljih++;
  73. }
  74. if(br_boljih>(0.1 *br_djece)){ //nisam zicer da je dobar uvjet u zagradi, brisem one koji su u 90% losih
  75. temp=pom->next;
  76. pom->next=temp->next;
  77. free(temp);
  78. }
  79. pom=pom->next;
  80. }
  81. //provjera prvog
  82. br_boljih=0;
  83. pom=*first;
  84. for(pom2=*first; pom2!=NULL; pom2=pom2->next)
  85. if(pom->broj<pom2->broj)br_boljih++;
  86. if(br_boljih>(0.1*br_djece)){
  87. temp=*first;
  88. first*=first*->next; //OVA LINIJA JE JAKO KRITICNA, KOMPAJLER JU OPCE NE PRIMA
  89. free(temp);
  90. }
  91. return *first;
  92. }
  93. int main(vodi){
  94. return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement