Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Napomene:
- Kao i prosli put, nekoliko malih napomena pred ispit, te
- stvari na koje bi trebali obratiti paznju:
- - call by value <-> call by reference, odnosno
- poziv po vrijednosti i poziv po referenci.
- recimo ako imate funkciju:
- int f(int a)
- {
- uradi_nesto;
- return rezultat;
- }
- u main-u je pozivate int povratni_rezultat=f(a);
- gdje je "a" neka cjelobrojna varijabla prethodno deklarisana.
- Ono sto je vazno ovdje zapamtiti, da vrijednost varijable "a"
- iz main-a prekopira u varijablu "a" u funkciji. Drugim
- rijecima, ako promjenite vrijednost varijable "a" u funkciji
- nece se odraziti na istoimenu varijablu u main-u.
- Da imamo ovakav slucaj:
- int f(int *a)
- {
- uradi_nesto;
- return rezultat;
- }
- a u main-u ovakav poziv: int povratni_rezultat=f(&a);
- onda svaka promjena vrijednosti u funkciji
- odrazava se na varijablu u main-u, i to je ono
- sto smo spominjali na tutorijalu poziv po vrijednost i poziv
- po referenci..
- Ovo vam govorim, jer cest uzrok netacnih ispisa je
- nerazumijevanje ovog.. ;)
- - Cest uzrok gresaka na zadacama(onih koji se trudili da nesto urade
- i svaka im cast, respect) je taj sto kada deklarisete niz
- elemenata, a potom unosite broj elemenata n, ne provjerite
- da li je n u opsegu u kojem ste deklarirali dimenziju niza:
- Recimo:
- int a[100],n,i;
- scanf("%d",&n);
- for(i=0;i<n;i++) unosi_u_niz;
- Ovo je pogresno jer ja kao n mogu unijeti 101, compiler
- nece javiti gresku, a ja cu unijeti 101 broj i ujedno
- pristupiti memoriji po kojoj nemam dozvolu bilo sta upisivati..
- poslije scanf-a dodajte samo ovaj uslov
- if (n<=0 || n>100) return 0;
- - Sljedeci uzrok gresaka na ispitu je nerazumjevanje sta treba raditi
- funkcija sta treba raditi main.. Naime, cesto vam se u zadatku kaze
- "Napraviti funkciju, a potom testirati u main-u.."
- Jako vazno je ovdje da ako zadatak kaze da funkcija nesto racuna,
- uredjuje mozda neki string(brise ili dodaje nesto itd) ili pak niz,
- da onda funkcija samo to i radi, ne i da ispisuje u toj istoj toj funkciji..
- Dakle, pogresno je u funkciji vrsiti ispis rezultata ako se to striktno od
- vas ne trazi, ispis treba biti u main-u ako prethodno nije naglaseno nesto tipa
- "Napisati funkciju koja ispisuje..."
- Ukratko, ako nije suprotno naglaseno, vasa funkcija se treba pobrinuti
- samo da dodjete do rezultata i eventualno da taj rezultat vratite iz funkcije
- da bi ste taj isti rezultat ispisali u main-u, opet napominjem ako nije suprotno
- navedeno...
- - Kod stringova u cetvrtoj zadaci uglavnom su greske bile da umetanjem
- novih znakova skoro niko nije pazio hoce li prekoraciti dimenziju niza.
- Jedan od nacina da rijesite taj problem je sto cete u jednu varijblu
- cuvati ogranicenje niza, recimo "ogranicenje", u drugu varijablu
- duzinu stringa, recimo "duzina", a treca varijabla nek bude brojac=0;
- i svakim umetanjem novih znakova uvezavate brojac, brojac++;
- Sada ako je brojac+duzina>ogranicenje, onda znate da ste premasili
- duzinu vaseg niza znakova
- - Jos jedna stvar kod stringova je ta sto poredjenjem dva stringa ne
- pazite hoceteli kod tog poredjena gledati znakove iza \0, jer
- stringovi ako nisu jednaki, mogu da ne imaju istu duzinu znakova,
- jedan je dakle duzi, jedan je kraci, te ako idete sve do \0 ovog duzeg
- jasno je da cete preci iza kraja ogranicenja(\0) ovog drugog kraceg stringa
- To mozete jednostavno rijesiti, da ako u petlji u kojoj poredite
- samo dodate sljedeci uslov(ovo je jedno od rjesenja, napominjem)
- if (*string1=='\0' || *string2=='\0') break;
- i time ako dodje u bilo kojem stringu do \0 petlja se prekida
- Sretno i veselo(u pozitivnom smislu) na ispitu..
- P.S. Buduci da opet od danas stanujem u Sarajevu, gdje nemam
- prikljucen internet, necu biti u mogucnosti da odgovaram
- na vasa pitanja ostatak dana, zato vam jos jednom zelim
- srecu na ispitu, te se drzite ovih uputa, i uputa sa tutorijala..
- ***VAZNO***
- Neka svako rjesenje vaseg zadatka pocinje sa "Ideja rjesavanja je.."
- Ipak tako pokazujete da znate razmisljati, te da imate ideju rjesavanja
- datog problema....
Add Comment
Please, Sign In to add comment