Advertisement
limun11

PRII - pokazivaci V

Aug 2nd, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. /*Napišite program u kojem ćete:
  6. a)  Deklarirati dvije varijable tipa float (broj1 i broj2).
  7. b)  Inicijalizirati varijablu broj1 vrijednošću 7.3.
  8. c)  Deklarirati pokazivač na tip podatka float.
  9. d)  Inicijalizirati pokazivač na adresu varijable broj1.
  10. e)  Ispisati vrijednost varijable na koju upućuje pokazivač koristeći dereferenciranje pokazivača.
  11. f)  Neka pokazivač pokazuje na varijablu broj2. Dodjelite proizvoljnu vrijednost u broj1 preko pokazivača. Ispišite vrijednost broj1 preko pokazivača.
  12. g)  Ispisati adresu varijable broj1.
  13. */
  14. //1:
  15. //void main()
  16. //{
  17. //  float broj1, broj2;
  18. //  broj1=7.3;
  19. //  float * p1;
  20. //  p1=&broj1;
  21. //  cout<<"vrijednost varijable na koju upućuje pokazivač koristeći dereferenciranje pokazivača: "<<*p1<<endl;
  22. //  p1=&broj2;
  23. //  *p1=5.7;
  24. //  cout<<"broj1: "<<*p1<<endl;
  25. //  cout<<"adresa varijable broj1: "<<&broj1<<endl;
  26. //
  27. //  system("PAUSE");
  28. //}
  29.  
  30. /*Napravite program u kome ćete:
  31. h)  unijeti dva broja (a i b tipa float).
  32. i)  deklarisati pokazivač p1 koji će pokazivati na varijablu a
  33. j)  deklarisati pokazivač p2 koji će pokazivati na varijablu b
  34. k)  izračunati sljedeće matematičke izraze koristeći pokazivače p1 i p2 (tj. bez korištenja varijable a i b).
  35.  
  36.  */
  37.  
  38.  /*void main()
  39.  {
  40.  float a,b;
  41.  cout<<"Unesite 2 broja: ";
  42.  cin>>a>>b;
  43.  float *p1=&a;
  44.  float *p2=&b;;
  45.  float c1, c2, c3, c4, c5, c6;
  46.  
  47.  c1=(*p1)-(*p2);
  48.  c2=sin(*p1)-cos(*p2);
  49.  c3=(*p2)*(*p1);
  50.  c4=(*p1)/(*p2);
  51.  c5=pow((*p1),(*p2));
  52.  c6=pow(sqrt((*p1)), (*p2));
  53.  cout<<"c1: "<<c1<<endl;
  54.  cout << "c2: " << c2 << endl;
  55.  cout << "c3: " << c3 << endl;
  56.  cout << "c4: " << c4 << endl;
  57.  cout << "c5: " << c5 << endl;
  58.  cout << "c6: " << c6 << endl;
  59.  
  60.  system("PAUSE");
  61.  
  62.  }*/
  63.  
  64. //void main()
  65. //{
  66. //  int a;
  67. //  cout << "Unesite broj: ";
  68. //  cin >> a;
  69. //
  70. //  int* p1;
  71. //  p1 = &a;
  72. //
  73. //  cout << *p1;
  74. //}
  75. /*Prepravite program tako da se dereferenciranje pokazivača p1 i ispis tako dobivene vrijednosti vrši u novoj funkciji void f1.
  76. Znači, u funkciji main treba se nalaziti samo varijabla a, dok u funkciji f1 treba se nalaziti samo varijabla (pokazivač) p1,
  77. koja prima adresu varijable a iz funkcije main. */
  78.  
  79. /*Pomoć:
  80. -   formalni parametar je: p1 tipa int*
  81. -   aktuelni parametar: adresa varijable a*/
  82.  
  83. //void f1(int *p1)
  84. //{
  85. //  cout<<*p1<<endl;
  86. //}
  87. //void main()
  88. //{
  89. //  int a;
  90. //  cout << "Unesite broj: ";
  91. //  cin >> a;
  92. //
  93. //  f1(&a);
  94. //  system("PAUSE");
  95. //}
  96.  
  97. /*Napravite program tako da iskoristite prototip funkcije:
  98. void saberi(int *, int *, int *);
  99. */
  100. /*Funkcija treba sabrati vrijednosti prva dva parametra i rezultat smjestiti u treći parametar.
  101. U funkciji main trebate nakon poziva funkcije ispisati rezultat sabiranja.*/
  102. //*************************************************************************************************************************************************************
  103. //void saberi(int *a, int*b, int *c)
  104. //{
  105. //  *c=*a+*b;
  106. //}
  107. //void main()
  108. //{
  109. //  int a=5,b=6,c;
  110. //  saberi (&a, &b, &c);
  111. //  cout <<c;
  112. //  system("PAUSE");   
  113. //}
  114.  
  115. /*Prepravite prethodni program (funkciju main) tako da poziv funkcije saberi i ispis vrijednosti sabiranja izvršava sa dodatnim pokazivačem p1 koji
  116. pokazuje na varijablu c.
  117.  
  118. */
  119.  
  120. //void saberi(int *a, int*b, int *c)
  121. //{
  122. //  *c=*a+*b;
  123. //}
  124. //void main()
  125. //{
  126. //  int a=5,b=6,c;
  127. //  int *p1=&c;
  128. //  int *p2=&b;
  129. //  int *p3=&a;
  130. //  saberi (p3, p2, p1);
  131. //  cout <<c<<endl;
  132. //  cout<<*p1<<endl;
  133. //  system("PAUSE");   
  134. //}
  135.  
  136. /*a)    Napravite program u kojem će te koristiti funkciju void zamjeni(int* p1, int* p2).
  137. Funkcija treba zamijeniti vrijednosti varijabli koji su joj proslijeđeni kao aktuelni parametri u pozivu.
  138. */
  139. //void zamjeni(int* p1, int* p2)
  140. //{
  141. //  int temp;
  142. //  temp=*p1;
  143. //  *p1=*p2;
  144. //  *p2=temp;
  145. //}
  146. //void main()
  147. //{
  148. //  int a=5, b=7;
  149. //  zamjeni(&a,&b);
  150. //  cout<<a<<" "<<b;
  151. //  system("PAUSE");
  152. //}
  153.  
  154. //8
  155. /*a)    deklarišite pokazivač p1 na int
  156. b)  alocirajte prostor pokazivaču p1 u dinamičkoj memoriji p1 = new int;
  157. c)  učitajte broj sa tastature u prethodno alocirani prostor
  158. d)  inkrementirajte prethodno uneseni broj koristeći pokazivač p1 pomoću operatora ++
  159. e)  definišite i pozovite funkciju promjeni_predznak čiji će formalni parametar biti pokazivač;
  160. funkcija treba promijeniti predznak broju koji je korisnik unio u koraku c
  161. f)  deklarirajte varijablu d i neka pokazivač p1 pokazuje na varijablu d
  162. g)  dodijelite varijabli d neku vrijednost koristeći pokazivač p1
  163. h)  promijenite predznak varijabli d, koristeći funkciju promjeni_predznak
  164. i)  pozovite ponovo funkciju promjeni_predznak i proslijedite joj kao aktuelni parametar pokazivač p1
  165.  
  166. */
  167. //void promijeniPredznak(int * p1)
  168. //{
  169. //  *p1=(*p1)*(-1);
  170. //}
  171. //void main()
  172. //{
  173. //  int *p1;//a
  174. //  p1=new int;//b
  175. //  cout<<"Unesite broj: ";
  176. //  cin>>*p1;//c
  177. //  (*p1)++;//d
  178. //  cout<<"Promjena predznaka... "<<endl;
  179. //  promijeniPredznak(p1);
  180. //  cout<<*p1<<endl;//e
  181. //  int d;
  182. //  delete p1;
  183. //  p1=&d;//f
  184. //  *p1=10;//g
  185. //  cout<<*p1<<endl;
  186. //  promijeniPredznak(p1);
  187. //  cout<<*p1<<endl;//h
  188. //  system("PAUSE");
  189. //
  190. //}
  191.  
  192. /*Napišite program u kojem ćete:
  193. a)  deklarirati niz tipa double koji ima 10 elemenata:
  194. double niz [10]={0.0, 1.1, 2.2, 3.3., 4.4, 5.5, 6.6, 7.7, 8.8, 9.9}
  195. b)  provjeriti koliko prostora u memoriji zauzima tip podatka double i koliko prostora u memoriji zauzima cijeli niz
  196. (upotrijebite operator sizeof)
  197. c)  deklarirati pokazivač koji pokazuje na objekt tipa double
  198. d)  inicijalizirate pokazivač na adresu prvog elementa niza
  199. (pokušajte ovu inicijalizaciju napraviti na dva načina)
  200. e)  ispišite 4 element niza na barem 3 različita načina
  201. (koristite indeksaciju elemenata niza, dereferenciranje pokazivača i operacije nad pokazivačem)
  202. f)  ispišite adrese svih elemenata niza koristeći operator inkrementa na pokazivač
  203. (vodite računa da ukoliko dekrementirate pokazivač – rezultat je adresa pomaknuta za onoliko bajta koliko zauzima tip
  204. podatka na koji upućuje pokazivač)
  205. g)  ispišite elemente niza koristeći dereferenciranje pokazivača.
  206.  
  207. */
  208. //void main()
  209. //{
  210. //  double niz [10]= { 0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };//a
  211. //  cout<<"Memorija double: "<<sizeof(double)<<endl;
  212. //  cout << "Memorija niza: " << sizeof(niz) << endl;//b
  213. //  double *p1;//c
  214. //  p1=&niz[0];
  215. //  p1 = &niz[1];//d
  216. //  cout<<niz[3]<<endl;
  217. //  cout<<p1[2]<<endl;
  218. //  cout<<*(p1+2)<<endl;//e
  219. //  for (int i = 0; i < 10; i++)
  220. //  {
  221. //      cout<<&niz[i]<<endl;//f
  222. //  }
  223. //  for (int i = 0; i < 10; i++)
  224. //  {
  225. //      cout<<p1[i]<<endl;//g
  226. //  }
  227. //  system("PAUSE");
  228. //}
  229.  
  230. /*Napišite program u kojem ćete deklarirari niz od 5 cijelobrojnih elemenata te uz pomoć:
  231. a)  funkcije: void unos (int *, int); omogućiti unos elemenata niza;
  232. b)  funkcije: void ispis (int *, int); omogućiti ispis elemenata niza;
  233. c)  funkcije: int* najveci (int *, int); vratiti adresu najvećeg elementa u nizu; obavezno provjerite je li
  234. funkcija vratila korektnu adresu.
  235. d)  funkcije: int* arit_sredina (int *, int); vratiti aritmetičku sredinu elemenata u nizu
  236. */
  237. //void unos(int * niz, int velicina)
  238. //{
  239. //  for (int i = 0; i < velicina; i++)
  240. //  {
  241. //      cin>>niz[velicina];
  242. //  }
  243. //}
  244. //void ispis(int * niz, int velicina)
  245. //{
  246. //  for (int i = 0; i < velicina; i++)
  247. //  {
  248. //      cout<<niz[i]<<endl;
  249. //  }
  250. //}
  251. //int * najveci(int * niz, int velicina)
  252. //{
  253. //  int *max=niz;
  254. //  for (int i = 0; i < velicina; i++)
  255. //  {
  256. //      if (niz[i] > *max)
  257. //      {
  258. //          max=&(niz[i]);
  259. //      }
  260. //  }
  261. //  return max;
  262. //}
  263. //float * artimetickaSredina(int * niz, int velicina)
  264. //{
  265. //  int suma=0;
  266. //  for (int i = 0; i < velicina; i++)
  267. //  {
  268. //      suma+=niz[i];
  269. //  }
  270. //  float * p = new float;
  271. //  *p = float(suma) / velicina;
  272. //  return p;
  273. //
  274. //}
  275. //void main()
  276. //{
  277. //  int niz [5]= { 5,1,9,15,10 };
  278. //  cout<<"unos... "<<endl;
  279. //  unos(niz, 5);
  280. //  cout<<"ispis... "<<endl;
  281. //  ispis(niz,5);
  282. //  int *p1;
  283. //  p1=najveci(niz, 5);
  284. //  cout<<"najveci... "<<endl;
  285. //  cout<<p1<<endl;
  286. //  cout<<*p1<<endl;
  287. //  cout<<&niz[3]<<endl;
  288. //  cout<<"sredina..."<<endl;
  289. //  float *p2 = artimetickaSredina(niz, 4);
  290. //  cout<<*p2<<endl;
  291. // 
  292. //  system("PAUSE");
  293. //}
  294.  
  295. /*Prepravite naredni program tako da funkcija doIt ima sljedeći prototip
  296. void doIt(Trougao* T1)
  297. */
  298.  
  299. #include <iostream>
  300. using namespace  std;
  301.  
  302. struct Tacka
  303. {
  304.     float x;
  305.     float y;
  306. };
  307.  
  308. struct Kruznica
  309. {
  310.     Tacka centar;
  311.     float poluprecnik;
  312. };
  313.  
  314. struct Trougao
  315. {
  316.     Tacka A;
  317.     Tacka B;
  318.     Tacka C;
  319. };
  320.  
  321. void info(Kruznica k)
  322. {
  323.     cout << "centar O( " << k.centar.x << ", " << k.centar.y << ")";
  324.     cout << "poluprečnik r =  " << k.poluprecnik << endl;
  325. }
  326.  
  327. void doIt(Trougao * T1)
  328. {
  329.  
  330.     cout << "Unesite x i y za tacku A: ";
  331.     cin >> T1->A.x;
  332.     cin >> T1->A.y;
  333.  
  334.     cout << "Unesite x i y za tacku B: ";
  335.     cin >> T1->B.x;
  336.     cin >> T1->B.y;
  337.  
  338.     cout << "Unesite x i y za tacku C: ";
  339.     cin >> T1->C.x;
  340.     cin >> T1->C.y;
  341.  
  342.     //b
  343.     Kruznica K1;
  344.     K1.centar = T1->A;
  345.     //ili
  346.     K1.centar.x = T1->A.x;
  347.     K1.centar.y = T1->A.y;
  348.     //c
  349.     cout << "Unesite poluprecnik za K1: ";
  350.     cin >> K1.poluprecnik;
  351.  
  352.     //d
  353.     Kruznica K3 = K1;
  354.     //e
  355.     K3.poluprecnik = K3.poluprecnik * 1.1;
  356.     //ili
  357.     K3.poluprecnik *= 1.1;
  358.  
  359.     //f
  360.     Kruznica K2 = { T1->B, K3.poluprecnik };
  361.     //ili
  362.     K2.centar = T1->B;
  363.     K2.poluprecnik = K3.poluprecnik;
  364.  
  365.     info(K1);
  366.     info(K2);
  367.     info(K3);
  368. }
  369.  
  370.  
  371. void main()
  372. {
  373.     Trougao T1;
  374.  
  375.     doIt(&T1);
  376.  
  377.     system("PAUSE");
  378. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement