Dzok1517

Sistemsko PV 7

Nov 27th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct osoba {
  6. char ime[50];
  7. char adresa[100];
  8. int godine;
  9. int godine_iskustva ;
  10. };
  11.  
  12. void ucitajOsobu(struct osoba *os)
  13. {
  14. printf("Ime: ");
  15. gets(os->ime);
  16. printf("Adresa: ");
  17. gets(os->adresa);
  18. printf("Starost: ");
  19. scanf("%d", &os->godine);
  20. printf("Godine iskustva: ");
  21. scanf("%d", &os->godine_iskustva);
  22. }
  23.  
  24. void ucitajNizOsoba(struct osoba osobe[], int n){
  25. for(int i =0 ; i < n ; i++){
  26. printf("\n-------------\n");
  27. printf("Unesite podatke od \t%i. osobe --> \n",i+1);
  28. getchar();
  29. ucitajOsobu(&osobe[i]);
  30. }
  31. }
  32.  
  33. void printOsoba(struct osoba os)
  34. {
  35. printf("\n-------------\n");
  36. printf("Ime: %s\n", os.ime);
  37. printf("Adresa: %s\n", os.adresa);
  38. printf("Starost: %d\n\n", os.godine);
  39. printf("Godine iskustva: %d\n\n", os.godine_iskustva);
  40. }
  41.  
  42. void printNizOsoba(struct osoba osobe[], int n){
  43. for(int i =0 ; i < n ; i++){
  44. printOsoba(osobe[i]);
  45. }
  46. }
  47.  
  48. float prosecnaStarostOsoba(struct osoba osobe[], int n){
  49. int resSum;
  50. for(int i =0 ; i < n ; i++){
  51. resSum += osobe[i].godine ;
  52. }
  53. float res = resSum / n ;
  54. return res;
  55. }
  56.  
  57. float prosecniRadniStaz(struct osoba osobe[], int n){
  58. int resSum;
  59. for(int i =0 ; i < n ; i++){
  60. resSum += osobe[i].godine_iskustva ;
  61. }
  62. float res = resSum / n ;
  63. return res;
  64. }
  65. int brElemenata = 0 ;
  66. struct osoba* izdvojOsobe(struct osoba osobe[], int n){
  67.  
  68. for(int i =0 ; i < n ; i++){
  69. if((osobe[i].godine < 50) && (osobe[i].godine_iskustva >20 ) )
  70. brElemenata++;
  71. }
  72.  
  73. struct osoba *osobeToReturn = malloc(brElemenata * sizeof(struct osoba));
  74. int helper = 0 ;
  75. for(int i =0 ; i < n ; i++){
  76. if((osobe[i].godine < 50) && (osobe[i].godine_iskustva >20 ) ){
  77. osobeToReturn[helper] = osobe[i];
  78. helper++;
  79. }
  80. }
  81. return osobeToReturn ;
  82. }
  83.  
  84.  
  85.  
  86. int main(){
  87.  
  88. printf("Ucitajte broj clanova niza (n) ---> ");
  89. int n ;
  90. scanf("%i",&n);
  91. struct osoba *osobe = malloc( n * sizeof(struct osoba));
  92.  
  93. ucitajNizOsoba(osobe , n );
  94. printf("\n-------------\n");
  95. printNizOsoba(osobe, n);
  96.  
  97. printf("\n-------------\n");
  98. printf("Prosecna starost osoba iz niza jeste --> ");
  99. float res = prosecnaStarostOsoba(osobe , n );
  100. printf("\t%.2f\t",res);
  101.  
  102. printf("\n-------------\n");
  103. printf("Prosecni radni staz osoba iz niza jeste --> ");
  104. float res2 = prosecniRadniStaz(osobe , n );
  105. printf("\t%.2f\t",res2);
  106.  
  107. struct osoba *osobe2 = izdvojOsobe(osobe, n );
  108.  
  109. printf("\n-------------\n\n");
  110. printf("Izdvojene osobe iz niza --> ");
  111. printNizOsoba(osobe2,brElemenata);
  112.  
  113.  
  114. return 0 ;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment