Advertisement
NedimPecanin

4. sedmica: zadatak 6

Jun 26th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.24 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. /*Zadatak
  5. Kreirajte niz od 5 realnih brojeva.
  6.  
  7. ·         Kreirajte sljedeće funkcije:
  8. void unos(float *, int);
  9. void ispis(float *, int);
  10. ·         Funkcije upis i ispis pozovite korištenjem odgovarajućih pokazivača.
  11. ·         Kreirajte funkcije:
  12. o    float *zadnji (float *, int); koja vraća adresu zadjeg elemenata u nizu;
  13. o    float * zeljeni (float *, int); koja vraća adresu elemenata po izboru korisnika;
  14. o    float * najblizi(float *, int); koja vraća adresu elementa koji je po svojoj vrijednosti najbiži vašoj idealnoj ocjeni;
  15.  
  16. ·         Kreirajte niz od 3 pokazivača;
  17. ·         kreirajte funkciju čija je zadaća dodijeliti adrese funkcija zadnji, zeljeni i najblizi pokazivačima u prethodno kreiranom nizu pokazivača;
  18. ·         pozovite funkcije zadnji, zeljeni i najblizi preko pokazivača.
  19.  */
  20. void unos(float *n, int v)
  21. {
  22.     for (int i = 0; i < v; i++)
  23.     {
  24.         cout << "Unesite " << i + 1 << ". element: ";
  25.         cin >> n[i];
  26.     }
  27. }
  28. void ispis(float *n, int v)
  29. {
  30.     for (int i = 0; i < v; i++)
  31.     {
  32.         cout << "[" << i << "] = " << n[i] << endl;
  33.     }
  34. }
  35. float *zadnji(float *n, int v)
  36. {
  37.     return &n[v - 1];
  38. }
  39. float * zeljeni(float *n, int v)
  40. {
  41.     return &n[v - 1];
  42. }
  43. float *najblizi(float *n, int v)
  44. {
  45.     float near = n[0];
  46.     for (int i = 0; i < v; i++)
  47.     {
  48.         if (10 - near > 10 - n[i])
  49.             near = n[i];
  50.     }
  51.     return &near;
  52. }
  53. void dodijela(float*(*p)(float *, int), int x)
  54. {
  55.     if (x == 0)
  56.         p = &zadnji;
  57.     if (x == 1)
  58.         p = &zeljeni;
  59.     if (x == 2)
  60.         p = &najblizi;
  61. }
  62.  
  63. void main()
  64. {
  65.     int izbor;
  66.     float n[5];
  67.     unos(n, 5);
  68.     ispis(n, 5);
  69.     float*(*p[3])(float *, int) = { NULL };
  70.     for (int i = 0; i < 3; i++)
  71.     {
  72.         dodijela(p[i], i);
  73.     }
  74.     cout << "Zadnji element u nizu: " << *(*p[0])(n, 5) << ", Adresa: " << zadnji(n, 5) << endl;
  75.     cout << "Izaberite kojeg elementa zelite adresu: ";
  76.     cin >> izbor;
  77.     cout << "To je element " << *zeljeni(n, izbor) << ", a njegova adresa je: " << zeljeni(n, izbor) << endl;
  78.     cout << "Element najblizi idealnoj ocjeni (10) je " << *najblizi(n, 5) << ", a njegova adresa je: " << najblizi(n, 5) << endl;
  79. }
  80.  
  81.  
  82.  
  83. #include<iostream>
  84. #include<cmath>
  85. using namespace std;
  86. /*Zadatak
  87. Kreirajte niz od 5 realnih brojeva.
  88.  
  89. ·         Kreirajte sljedeće funkcije:
  90. void unos(float *, int);
  91. void ispis(float *, int);
  92. ·         Funkcije upis i ispis pozovite korištenjem odgovarajućih pokazivača.
  93. ·         Kreirajte funkcije:
  94. o    float *zadnji (float *, int); koja vraća adresu zadjeg elemenata u nizu;
  95. o    float * zeljeni (float *, int); koja vraća adresu elemenata po izboru korisnika;
  96. o    float * najblizi(float *, int); koja vraća adresu elementa koji je po svojoj vrijednosti najbiži vašoj idealnoj ocjeni;
  97.  
  98. ·         Kreirajte niz od 3 pokazivača;
  99. ·         kreirajte funkciju čija je zadaća dodijeliti adrese funkcija zadnji, zeljeni i najblizi pokazivačima u prethodno kreiranom nizu pokazivača;
  100. ·         pozovite funkcije zadnji, zeljeni i najblizi preko pokazivača.
  101.  */
  102. void unos(float *n, int v)
  103. {
  104.     for (int i = 0; i < v; i++)
  105.     {
  106.         cout << "Unesite " << i + 1 << ". element: ";
  107.         cin >> n[i];
  108.     }
  109. }
  110. void ispis(float *n, int v)
  111. {
  112.     for (int i = 0; i < v; i++)
  113.     {
  114.         cout << "[" << i << "] = " << n[i] << endl;
  115.     }
  116. }
  117. float *zadnji(float *n, int v)
  118. {
  119.     return &n[v - 1];
  120. }
  121. float * zeljeni(float *n, int v)
  122. {
  123.     return &n[v - 1];
  124. }
  125. float *najblizi(float *n, int v)
  126. {
  127.     float near = n[0];
  128.     for (int i = 0; i < v; i++)
  129.     {
  130.         if (10 - near > 10 - n[i])
  131.             near = n[i];
  132.     }
  133.     return &near;
  134. }
  135. float* (*dodijela(int x))(float *, int)
  136. {
  137.     if (x == 0)
  138.         return &zadnji;
  139.     if (x == 1)
  140.         return &zeljeni;
  141.     if (x == 2)
  142.         return &najblizi;
  143. }
  144.  
  145. void main()
  146. {
  147.     int izbor;
  148.     float n[5];
  149.     unos(n, 5);
  150.     ispis(n, 5);
  151.     float*(*p[3])(float *, int) = { NULL };
  152.     for (int i = 0; i < 3; i++)
  153.     {
  154.         p[i] = dodijela(i);
  155.     }
  156.     cout << "Zadnji element u nizu: " << *(*p[0])(n, 5) << ", Adresa: " << zadnji(n, 5) << endl;
  157.     cout << "Izaberite kojeg elementa zelite adresu: ";
  158.     cin >> izbor;
  159.     cout << "To je element " << *zeljeni(n, izbor) << ", a njegova adresa je: " << zeljeni(n, izbor) << endl;
  160.     cout << "Element najblizi idealnoj ocjeni (10) je " << *najblizi(n, 5) << ", a njegova adresa je: " << najblizi(n, 5) << endl;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement