limun11

PRII - POKAZIVACI - Vjezba 3

Mar 15th, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.40 KB | None | 0 0
  1. /*Zadatak 1
  2. Napišite program u kojem ćete:
  3. a) Deklarirati dvije varijable tipa float (broj1 i broj2).
  4. b) Inicijalizirati varijablu broj1 vrijednošću 7.3.
  5. c) Deklarirati pokazivač na tip podatka float.
  6. d) Inicijalizirati pokazivač na adresu varijable broj1.
  7. e) Ispisati vrijednost varijable na koju upućuje pokazivač koristeći dereferenciranje pokazivača.
  8. f) Inicijalizirati vrijednost varijable broj2 na istu vrijednost na koju upućuje pokazivač, te ju ispisati.
  9. g) Ispisati adresu varijable broj1.*/
  10.  
  11. #pragma warning (disable:4996)
  12. #include <iostream>
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17.     float broj1, broj2;
  18.     broj1 = 7.3;
  19.     float *pok;
  20.     pok = &broj1;
  21.     cout << "Ispis vrijednosti varijable na koju pokazuje pokazivac (dereferenciranje pokazivaca): " << *pok << endl;
  22.     broj2 = *pok;
  23.     cout << "Vrijednost varijable broj 2 je: " << broj2 << endl;
  24.     cout << "Adresa varijable broj1 je: " << &broj1 << endl;
  25.     system("PAUSE");
  26.     return 0;
  27. }
  28.  
  29. /////
  30.  
  31. /*Zadatak 2
  32. Napišite program u kojem ćete:
  33. a) deklarirati niz tipa double koji ima 10 elemenata:
  34. double niz [10]={0.0, 1.1, 2.2, 3.3., 4.4, 5.5, 6.6, 7.7, 8.8, 9.9}
  35. b) provjeriti koliko prostora u memoriji zauzima tip podatka double i koliko prostora u memoriji zauzima cijeli niz
  36. (upotrijebite operator sizeof)
  37. c) deklarirati pokazivač koji pokazuje na objekt tipa double
  38. d) inicijalizirate pokazivač na adresu prvog elementa niza
  39. (pokušajte ovu inicijalizaciju napraviti na dva načina)
  40. e) ispišite 4 element niza na barem 3 različita načina
  41. (koristite indeksaciju elemenata niza, dereferenciranje pokazivača i operacije nad pokazivačem)
  42. f) ispišite adrese svih elemenata niza koristeći operator inkrementa na pokazivač
  43. (vodite računa da ukoliko dekrementirate pokazivač – rezultat je adresa pomaknuta za onoliko bajta koliko zauzima tip podatka na koji upućuje pokazivač)
  44. g) ispišite elemente niza koristeći dereferenciranje pokazivača.*/
  45.  
  46. #pragma warning (disable:4996)
  47. #include <iostream>
  48. using namespace std;
  49.  
  50. int main()
  51. {
  52.     double niz[10] = { 0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };
  53.  
  54.     cout << "Memorija koju zauzima tip podatka double: " << sizeof(double) << endl;
  55.     cout << "Memorija koju zauzima cijeli niz: " << sizeof(niz) << endl;
  56.  
  57.     cout << "Svi elementi niza (vrijednosti): " << endl;
  58.     for (int i = 0; i < 10; i++)
  59.     {
  60.         cout <<i+1<<": " <<niz[i] << endl;
  61.     }
  62.  
  63.     cout << "Svi elementi niza (adrese): " << endl;
  64.     for (int i = 0; i < 10; i++)
  65.     {
  66.         cout << i + 1 << ": "<< &niz[i] << endl;
  67.     }
  68.  
  69.     double * pok;
  70.     pok = &niz[0];
  71. cout << "Pokazivac na adresi prvog elementa niza: " << pok << endl;
  72.  
  73.     cout << "Ispis 4 elementa niza na 3 razlicita nacina: " << endl;
  74.     cout << "IV element niza: " << niz[3] << endl;
  75.     cout << "IV element niza: " << pok[3] << endl;
  76.     cout << "IV element niza: " << pok[2 + 1] << endl;
  77.  
  78.     cout << "adrese svih elemenata niza koristeći operator inkrementa na pokazivac: " << endl;
  79.     for (int i = 0; i < 10; i++)
  80.     {
  81.         cout << i + 1 << ": " << pok << endl;
  82.         pok++;
  83.     }
  84.  
  85.     cout << "svi elementi niza preko dereferenciranja pokazivaca: " << endl;
  86.     for (int i = 0; i < 10; i++)
  87.     {
  88.         pok = &niz[i];
  89.         cout << i + 1 << ": " << *pok << endl;
  90.     }
  91.  
  92.     system("PAUSE");
  93.     return 0;
  94. }
  95.  
  96. /////
  97.  
  98. /*Zadatak 3
  99. Napišite program koji će vrijednost unesenog cijelog broja mijenjati u trostruko veću – kub unesenog broja.
  100. Neka funkcija za računanje kuba ima jedan argument i neka njeno zaglavlje izgleda ovako:
  101. void cube ( int * );*/
  102. #pragma warning (disable:4996)
  103. #include <iostream>
  104. using namespace std;
  105.  
  106. void cube(int * broj)
  107. {
  108.     *broj = pow(*broj, 3);
  109. }
  110. int main()
  111. {
  112.     int n;
  113.     cout << "Unesite cijeli broj: ";
  114.     cin >> n;
  115.  
  116.     cout << "Unijeli ste: " << n << endl;
  117.  
  118.     cube(&n);
  119.     cout << "Kub unesenog broja je: " << n<<endl;
  120.  
  121.     system("PAUSE");
  122.     return 0;
  123. }
  124.  
  125. /////
  126.  
  127. /*Zadatak 4:
  128. Napišite program u kojem ćete deklarirari niz od 5 cijelobrojnih elemenata te uz pomoć:
  129.  funkcije: void unos (int *, int); omogućiti unos elemenata niza;
  130.  funkcije: void ispis (int *, int); omogućiti ispis elemenata niza;
  131.  funkcije: int * najveci (int *, int); vratiti adresu najvećeg elementa u nizu; obavezno provjerite je li funkcija vratila korektnu adresu.*/
  132.  
  133. #pragma warning (disable:4996)
  134. #include <iostream>
  135. using namespace std;
  136.  
  137.  
  138. void unos(int * niz , int velicina )
  139. {
  140.     for (int i = 0; i < velicina; i++)
  141.         cin >> *(niz + i);
  142. }
  143. void ispis(int *niz , int velicina)
  144. {
  145.     for (int i = 0; i < velicina; i++)
  146.         cout << *(niz+i) << endl;
  147. }
  148. int * najveci(int * niz, int velicina)
  149. {
  150.     int *adresa=0;
  151.     int max = niz[0];
  152.     for (int i = 0; i < velicina; i++)
  153.     {
  154.         if (*(niz + i) > max)
  155.         {
  156.             max = *(niz + i);
  157.             adresa = niz + i;
  158.         }
  159.     }
  160.     return adresa;
  161. }
  162.  
  163. void provjera(int * niz, int velicina)
  164. {
  165.     for (int i = 0; i < velicina; i++)
  166.     {
  167.         cout << i + 1 << ": " <<niz+i << endl;
  168.     }
  169. }
  170. int main()
  171. {
  172.     const int vel = 5;
  173.     int nizElemenata[vel];
  174.     int *pok;
  175.  
  176.     cout << "Unesite elemente niza: " << endl;
  177.     unos(nizElemenata, vel);
  178.  
  179.     cout << "Unijeli ste sljedece elemente: " << endl;
  180.     ispis(nizElemenata, vel);
  181.  
  182.     pok=najveci(nizElemenata, vel);
  183.     cout << "Adresa najveceg elementa u nizu: " <<pok<< endl;
  184.  
  185.     cout << "Adrese elemenata u nizu: " << endl;
  186.     for (int i = 0; i < vel; i++)
  187.     {
  188.         cout <<i+1 <<": "<<&nizElemenata[i] << endl;
  189.     }
  190.    
  191.     cout << "Adrese elemenata u nizu (preko funkcije provjera): " << endl;
  192.     provjera(nizElemenata, vel);
  193.     system("PAUSE");
  194.     return 0;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment