Guest User

Untitled

a guest
May 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. Napomene:
  2.  
  3. Kao i prosli put, nekoliko malih napomena pred ispit, te
  4. stvari na koje bi trebali obratiti paznju:
  5.  
  6. - call by value <-> call by reference, odnosno
  7. poziv po vrijednosti i poziv po referenci.
  8. recimo ako imate funkciju:
  9. int f(int a)
  10. {
  11. uradi_nesto;
  12. return rezultat;
  13. }
  14. u main-u je pozivate int povratni_rezultat=f(a);
  15. gdje je "a" neka cjelobrojna varijabla prethodno deklarisana.
  16. Ono sto je vazno ovdje zapamtiti, da vrijednost varijable "a"
  17. iz main-a prekopira u varijablu "a" u funkciji. Drugim
  18. rijecima, ako promjenite vrijednost varijable "a" u funkciji
  19. nece se odraziti na istoimenu varijablu u main-u.
  20.  
  21. Da imamo ovakav slucaj:
  22. int f(int *a)
  23. {
  24. uradi_nesto;
  25. return rezultat;
  26. }
  27. a u main-u ovakav poziv: int povratni_rezultat=f(&a);
  28. onda svaka promjena vrijednosti u funkciji
  29. odrazava se na varijablu u main-u, i to je ono
  30. sto smo spominjali na tutorijalu poziv po vrijednost i poziv
  31. po referenci..
  32. Ovo vam govorim, jer cest uzrok netacnih ispisa je
  33. nerazumijevanje ovog.. ;)
  34.  
  35. - Cest uzrok gresaka na zadacama(onih koji se trudili da nesto urade
  36. i svaka im cast, respect) je taj sto kada deklarisete niz
  37. elemenata, a potom unosite broj elemenata n, ne provjerite
  38. da li je n u opsegu u kojem ste deklarirali dimenziju niza:
  39. Recimo:
  40. int a[100],n,i;
  41. scanf("%d",&n);
  42. for(i=0;i<n;i++) unosi_u_niz;
  43. Ovo je pogresno jer ja kao n mogu unijeti 101, compiler
  44. nece javiti gresku, a ja cu unijeti 101 broj i ujedno
  45. pristupiti memoriji po kojoj nemam dozvolu bilo sta upisivati..
  46. poslije scanf-a dodajte samo ovaj uslov
  47. if (n<=0 || n>100) return 0;
  48.  
  49. - Sljedeci uzrok gresaka na ispitu je nerazumjevanje sta treba raditi
  50. funkcija sta treba raditi main.. Naime, cesto vam se u zadatku kaze
  51. "Napraviti funkciju, a potom testirati u main-u.."
  52. Jako vazno je ovdje da ako zadatak kaze da funkcija nesto racuna,
  53. uredjuje mozda neki string(brise ili dodaje nesto itd) ili pak niz,
  54. da onda funkcija samo to i radi, ne i da ispisuje u toj istoj toj funkciji..
  55. Dakle, pogresno je u funkciji vrsiti ispis rezultata ako se to striktno od
  56. vas ne trazi, ispis treba biti u main-u ako prethodno nije naglaseno nesto tipa
  57. "Napisati funkciju koja ispisuje..."
  58. Ukratko, ako nije suprotno naglaseno, vasa funkcija se treba pobrinuti
  59. samo da dodjete do rezultata i eventualno da taj rezultat vratite iz funkcije
  60. da bi ste taj isti rezultat ispisali u main-u, opet napominjem ako nije suprotno
  61. navedeno...
  62.  
  63. - Kod stringova u cetvrtoj zadaci uglavnom su greske bile da umetanjem
  64. novih znakova skoro niko nije pazio hoce li prekoraciti dimenziju niza.
  65. Jedan od nacina da rijesite taj problem je sto cete u jednu varijblu
  66. cuvati ogranicenje niza, recimo "ogranicenje", u drugu varijablu
  67. duzinu stringa, recimo "duzina", a treca varijabla nek bude brojac=0;
  68. i svakim umetanjem novih znakova uvezavate brojac, brojac++;
  69. Sada ako je brojac+duzina>ogranicenje, onda znate da ste premasili
  70. duzinu vaseg niza znakova
  71.  
  72. - Jos jedna stvar kod stringova je ta sto poredjenjem dva stringa ne
  73. pazite hoceteli kod tog poredjena gledati znakove iza \0, jer
  74. stringovi ako nisu jednaki, mogu da ne imaju istu duzinu znakova,
  75. jedan je dakle duzi, jedan je kraci, te ako idete sve do \0 ovog duzeg
  76. jasno je da cete preci iza kraja ogranicenja(\0) ovog drugog kraceg stringa
  77. To mozete jednostavno rijesiti, da ako u petlji u kojoj poredite
  78. samo dodate sljedeci uslov(ovo je jedno od rjesenja, napominjem)
  79. if (*string1=='\0' || *string2=='\0') break;
  80. i time ako dodje u bilo kojem stringu do \0 petlja se prekida
  81.  
  82.  
  83. Sretno i veselo(u pozitivnom smislu) na ispitu..
  84.  
  85. P.S. Buduci da opet od danas stanujem u Sarajevu, gdje nemam
  86. prikljucen internet, necu biti u mogucnosti da odgovaram
  87. na vasa pitanja ostatak dana, zato vam jos jednom zelim
  88. srecu na ispitu, te se drzite ovih uputa, i uputa sa tutorijala..
  89.  
  90.  
  91.  
  92. ***VAZNO***
  93.  
  94. Neka svako rjesenje vaseg zadatka pocinje sa "Ideja rjesavanja je.."
  95. Ipak tako pokazujete da znate razmisljati, te da imate ideju rjesavanja
  96. datog problema....
Add Comment
Please, Sign In to add comment