Advertisement
wiuu23

V4-PokazivaciNaFukcije

Apr 9th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.06 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void uvecaj(int *a, int *b)
  5. {
  6.     //posto se varijable predaju po vrijednosti a i b
  7.     (*a)++; //ovaj inkrement nece utjecati na varijablu 'a' u main-u
  8.     (*b)++; // --||--
  9.     //++(*a);
  10.     //++(*b);
  11.  
  12.     cout << "U funkciji UVECAJ vrijednosti varijabli su: " << endl;
  13.     cout << "a: " << *a << endl;
  14.     cout << "b: " << *b << endl;
  15.     cout << "---------------------------------------------------------" << endl;
  16. }
  17.  
  18. void main()
  19. {
  20.     int a = 6;
  21.     int b = 9;
  22.     cout << "MAIN prije poziva funkcije uvecaj: " << endl;
  23.     cout << "a: " << a << endl;
  24.     cout << "b: " << b << endl;
  25.     cout << "---------------------------------------------------------" << endl;
  26.     uvecaj(&a, &b);
  27.     cout << "MAIN poslije poziva funkcije uvecaj: " << endl;
  28.     cout << "a: " << a << endl;
  29.     cout << "b: " << b << endl;
  30.     cout << "---------------------------------------------------------" << endl;
  31.  
  32.     system("PAUSE");
  33. }
  34. //
  35. #include <iostream>
  36. using namespace std;
  37.  
  38. void main()
  39. {
  40.     int a = 15;
  41.     int & refA = a;
  42.  
  43.     cout << refA << endl;
  44.     int *pokA = &a;
  45.     cout << *pokA << endl;
  46.  
  47.     cout << "---------------------------------------------------------" << endl;
  48.  
  49.     cout << "Vrijednost varijable a: " << a << endl;
  50.     cout << "Vrijednost reference ref: " << refA << endl;
  51.  
  52.     cout << "Adresa varijable a \t: " << &a << endl;
  53.     cout << "Adresa reference refA \t: " << &refA << endl;
  54.  
  55.     cout << "---------------------------------------------------------" << endl;
  56.  
  57.     refA = 10;
  58.     cout << "refA=10" << endl;
  59.  
  60.     cout << "---------------------------------------------------------" << endl;
  61.  
  62.     cout << "Vrijednost varijable a: " << a << endl;
  63.     cout << "Vrijednost reference ref: " << refA << endl;
  64.  
  65.     cout << "---------------------------------------------------------" << endl;
  66.  
  67.     a++;
  68.     cout << "a++" << endl;
  69.    
  70.     cout << "---------------------------------------------------------" << endl;
  71.  
  72.     cout << "Vrijednost varijable a: " << a << endl;
  73.     cout << "Vrijednost reference ref: " << refA << endl;
  74.  
  75.     cout << "---------------------------------------------------------" << endl;
  76.  
  77.     system("PAUSE");
  78. }
  79. //
  80. #include <iostream>
  81. using namespace std;
  82.  
  83. //funkcija prima parametre po referenci i manipulise originalnim vrijednostima
  84. void uvecaj(int & ref)
  85. {
  86.     cout << "Unutar funkcije uvecaj: " << endl;
  87.     ref++; //inkrementira originalnu vrijednost varijable a
  88.     cout << "ref++" << endl;
  89.     cout << "Adresa varijable ref je: " << &ref << endl;
  90.     cout << "Vrijednost varijable ref je: " << ref << endl;
  91.     cout << "------------------------------------------------------" << endl;
  92. }
  93.  
  94. int main()
  95. {
  96.     int a = 5;
  97.     cout << "MAIN prije poziva funkcije uveaj: " << endl;
  98.     cout << "Adresa varijable a: " << &a << endl;
  99.     cout << "Vrijednost varijable a: " << a << endl;
  100.     cout << "------------------------------------------------------" << endl;
  101.     uvecaj(a);
  102.     cout << "MAIN poslije poziva funkcije uveaj: " << endl;
  103.     cout << "Adresa varijable a: " << &a << endl;
  104.     cout << "Vrijednost varijable a: " << a << endl;
  105.     cout << "------------------------------------------------------" << endl;
  106.  
  107.     /*int b = 20;
  108.     int & refB;
  109.     refB = b;*/
  110.  
  111.     int b = 20;
  112.     int *pokB;
  113.     pokB = &b;
  114.     cout << pokB << endl;
  115.     cout << *pokB << endl;
  116.  
  117.     system("PAUSE");
  118. }
  119. //
  120. #include <iostream>
  121. using namespace std;
  122.  
  123. int saberi(int a, int b)
  124. {
  125.     return a + b;
  126. }
  127.  
  128. void main()
  129. {
  130.     //obje linije ispisuju adresu funkcije saberi
  131.     cout << &saberi << endl;
  132.     cout << saberi << endl;
  133.  
  134.     system("PAUSE");
  135. }
  136. //
  137. #include <iostream>
  138. using namespace std;
  139.  
  140. bool provjeri(int broj)
  141. {
  142.     if (broj >= 10)
  143.         return true;
  144.     else
  145.         return false;
  146. }
  147.  
  148. void main()
  149. {
  150.     int broj = 0;
  151.  
  152.     //kreiramo pokazivac na funkciju - koja vraca tip podatka bool - i prima jedan cjelobrojni parametar
  153.     bool(*pFunkcija)(int) = nullptr;
  154.  
  155.     //pokazivacu dodjeljujemo adresu funkcije 'provjeri'
  156.     pFunkcija = &provjeri;
  157.  
  158.     cout << "Unesite neki broj: ";
  159.     cin >> broj;
  160.  
  161.     //funkciju pozivamo koristeci pokazivac pFunkacija
  162.     //kao argument predajemo uneseni broj
  163.     //vrijednost koju funkcija vrati (ture ili false) pohranjujemo u varijablu odgovor
  164.     bool odgovor = (*pFunkcija)(broj);
  165.  
  166.     if (odgovor == true)
  167.         cout << "Uneseni broj je veci ili jednak 10. " << endl;
  168.     else
  169.         cout << "Uneseni broj je manji od 10. " << endl;
  170.  
  171.     system("PAUSE");
  172. }
  173. //
  174. #include <iostream>
  175. using namespace std;
  176.  
  177. int saberi(int a, int b)
  178. {
  179.     return a + b;
  180. }
  181.  
  182. void main()
  183. {
  184.     int a = 6, b = 7;
  185.  
  186.     //kreiramo pokazivac na funkciju koja vraca cjelobrojnu vrijednost - i prima 2 cjelobrojna parametra
  187.     int(*pFunkcija)(int, int) = &saberi;
  188.  
  189.     //moguce je provjeriti da li pokazivac zaista pokazuje na funkciju saberi
  190.     if (pFunkcija == &saberi)
  191.         //pozivamo funkciju koreisteci pokazivac i ispisujemo povratnu vrijednost
  192.         cout << "Zbir brojeva je: " << (*pFunkcija)(a, b) << endl;
  193.     else
  194.         cout << "Greska pri izvrsenju programa. " << endl;
  195.  
  196.     system("PAUSE");
  197. }
  198. //
  199. #include <iostream>
  200. using namespace std;
  201.  
  202. int kvadriraj(int broj)
  203. {
  204.     return broj * broj;
  205. }
  206.  
  207. int kub(int broj)
  208. {
  209.     return broj * broj*broj;
  210. }
  211.  
  212. void centralna(int broj, int(*pFunkcija)(int))
  213. {
  214.     int rezultat = (*pFunkcija)(broj);
  215.     cout << "Rezultat je: " << rezultat << endl;
  216. }
  217.  
  218. void main()
  219. {
  220.     int broj = 0;
  221.     //int(*pFunkcija)(int) = nullptr;
  222.  
  223.     cout << "Unesite neki broj: ";
  224.     cin >> broj;
  225.  
  226.     if (broj < 10)
  227.         centralna(broj, &kub);
  228.     else
  229.         centralna(broj, &kvadriraj);
  230.  
  231.     //centralna(broj, pFunkcija);
  232.  
  233.     system("PAUSE");
  234. }
  235. //
  236. #include <iostream>
  237. using namespace std;
  238.  
  239. void unos(int *niz, int max)
  240. {
  241.     for (int i = 0; i < max; i++)
  242.     {
  243.         cout << i + 1 << ".broj: ";
  244.         cin >> niz[i];
  245.     }
  246. }
  247.  
  248. void ispis(int * niz, int max)
  249. {
  250.     cout << "-------------------------------\n";
  251.     for (int i = 0; i < max; i++)
  252.     {
  253.         cout << i + 1 << ". adresa" << niz + i << " vrijednost: " << niz[i] << endl;
  254.     }
  255.     cout << "-------------------------------\n";
  256. }
  257.  
  258. int *getPokazivac(int *niz, int max)
  259. {
  260.     int indeks = 0;
  261.     //ispisujemo vrijednosti kako bi korisnika informisali o velicini niza
  262.     ispis(niz, max);
  263.  
  264.     cout << "Unesite redni broj elemanta na koji kreirate pokazivac: ";
  265.     cin >> indeks;
  266.  
  267.     //korisnika onemogucavamo da unese vrijednost koja nije u opsegu niza
  268.     if (indeks <= max && indeks > 0)
  269.     {
  270.         //kreira se pokazivac na element niza koji je odabrao korisnik
  271.         int * pok = &niz[indeks - 1];
  272.         //funkcija vraca pokazivac
  273.         return pok;
  274.     }
  275.  
  276.     //ako korisnik unese indeks koje je veci od 5 ili manji (ili jednak) od 0, funkcija treba da vrati nullptr
  277.     return nullptr;
  278. }
  279.  
  280. void main()
  281. {
  282.     const int max = 5;
  283.     int niz[max];
  284.     unos(niz, max);
  285.  
  286.     //pokazivac pok ce biti inicijalizovan adresom koju vrati funkcija getPokazivac. To moze biti adresa nekog clana niza ili nullptr
  287.     int *pok = getPokazivac(niz, max);
  288.  
  289.     //provjerom da li je pokazivac inicijalizovan na nullptr onemogucavamo gresku prilikom izvrsenja programa
  290.     //nije moguce dereferencirati pokazivac koji ne pokazuje nigdje tj. nullptr pokazivac
  291.     if (pok != nullptr)
  292.     {
  293.         cout << "Pokazivac pokazuje na adresu: " << pok;
  294.         cout << " na kojoj se nalazi vrijednost: " << *pok << endl;
  295.     }
  296.     else
  297.         cout << "Poruka o gresci.. " << endl;
  298.  
  299.     system("PAUSE");
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement