Fakultet elektrotehnike, strojarstva i brodogradnje Sveucilista u Splitu Studij racunarstva Kolegij: Programiranje 1 Sk.god. 2004/2005 Student:____________________________ DOMACI RAD - VJEZBA 12 1. Kratko opisite a) Svrhu naloga (kljucne rijeci) typedef b) Prijenos pojedinih clanova strukture u funkciju (kao argumenta) c) Prijenos cijelih struktura u funkciju (kao argumenta) d) Pristupanje clanovima strukture preko pokazivaca e) Uniju podataka. 2. Odgovorite na sljedeca pitanja: a) Po cemu se struktura razlikuje od unije? b) Kada se za pristupanje clanovima strukture rabi . (tocka), a kada -> operator? c) Unija sadrzi int i double podatak. Koliko bajtova zauzima unija? d) Moze li prototip funkcije sadrzavati strukturu prije nego sto je ta struktura prijavljena? Zasto? 3. Napisite program koji ce ucitati do 10 imena i pripadnih adresa. Presloziti imena po abecednom redu i ispisati cijeli adresar. Upute: - Ime i adresa tvore strukturu - Abecednu usporedbu imena vrsiti funkcijom strcmp () - "Prebacivanje" jednoga niza znakova u drugi vrsiti funkcijom strcpy () ---------------------------------------------------------------------- ODGOVORI / RJESENJA ---------------------------------------------------------------------- 1.) a)Korištenjem naredbe typedef zadaju se nova, ili se predefiniraju već postojeća imena tipova podataka,pomocu typedef se zapravo definiraju sinonimi postojećih tipova podataka. b)Npr: float prosjek (int);//prototip funkcije typedef struct { char Ime[50]; int MB; int Polozeno; float Uspjeh; } Student; -//--//- pR[i]->Uspjeh = prosjek(pR[i]->Polozeno); // //definicija funkcije: float prosjek (int n) { return n/5.0*100; } Prijenos uz pomoc pokazivaca na strukturu, ali moze sl. i bez pokazivaca. c)Struktura se u funkciju može prenijeti direktnim prijenosom, preko vrijednosti, ili prijenosom adrese, preko pokazivača. d)Neka je definirana struktura: # include struct student { int MB; }; main() { student *p; student racunarac; p=&racunarac; printf("Upisi MB;"); scanf("%d",&p->MB); printf("%d",p->MB); return 0; } e)Unija je složena varijabla koja se sastoji od više istovrsnih ili različitih tipova podataka, kod unije u jednom trenutku postoji samo jedan član.Kod unije sve varijavle deklarirane unutar unije zauzimaju isto mjesto u memoriji,veličina se određuje prema najvećoj.Nemože se pristupiti bilo kojem članu unije. ****************************************************************************************** 2.) a)Za razliku od strukture ,kod koje se uvijek može pristupiti svim njezinim članovima ,kod unije se može pristupiti samo jednom članu.Svi članovi unije ne mogu istodobno postojati, može postojati samo jedan član. b)Operator(.)povezuje strukturu s članom strukture,a (->) povezuje pokazivač na strukturu s članom strukture. c)Unija zauzima 8 B;jer unija zauzima onoliko memorije koliko je potrebno za zapis najvećeg člana. d)Ako je prototip funkcije koja prima strukturu, ili pokazivač na strukturu, deklariran prije nego što je struktura prijavljena tada u trenutku deklaracije prototipa struktura jos ne postoji,pa prototip funkcije nemože sadržavati strukturu prije nego sto je prijavljena. ******************************************************************************************* 3.) # include # include void upis (int); void ispis (int); struct podaci { char ime[50]; char adres[50]; } adresa[20]; main() { int i,j,n; char temp [20]; podaci *a[20]; puts("Koliko unosa??:"); scanf("%d",&n); for (i=0;iime,a[j]->ime))==1) { strcpy(temp,a[i]->ime); strcpy(a[i]->ime,a[j]->ime); strcpy(a[j]->ime,temp); } } } for(i=0;i