Fakultet elektrotehnike, strojarstva i brodogradnje Sveucilista u Splitu Studij racunarstva Kolegij: Programiranje 1 Sk.god. 2004/2005 Student: ________________________ DOMACI RAD - VJEZBA 10 1. Kratko opisite a) Kako se visedimenzionalna polja mogu prijaviti pokazivacima b) Prijenos funkcije u drugu funkciju, kao argument c) Strukturu podataka (engl. structure) d) Pristupanje pojedinim clanovima strukture 2. Odgovorite na sljedeca pitanja: a) Po cemu se struktura razlikuje od polja podataka? b) Kako se prijavljuje struktura podataka? c) Sto je to clan strukture? Koliki je doseg imena clana strukture (sto se dogadja ako program ima varijablu istoga imena kao sto je i clan strukture)? 3. Izvrsite sljedece prijave: a) Prijavite strukturu koja se sastoji od dva realna broja - neka se zovu Re i Im. Strukturu nazovite imenom Complex b) Prijavite dvije varijable X i Y, svaku vrste Complex c) Objedinite prijave iz prethodna dva primjera u jednu prijavu d) Prijavite jednodimenzionalno polje od 100 clanova, pri cemu je svaki clan polja struktura vrste Complex 4. Program P_103 preraditi na nacin da se clanovima polja Brojevi pristupa s indeksima, a ne pokazivacima (pokazivac na funkciju ostaje). 5. PRIPREMA ZA KOLOKVIJ (zadatak "a la kolokvij"): Ucitati polje visina studenata/studentica racunarstva (do 100 podataka). Ispisati broj natprosjecno visokih studenata/studentica. Prosjecnu visinu odrediti u posebnoj funkciji. Napomena: Na kolokvij ponijeti jednu svjeze formatiranu disketu s uredno ispisanim imenom, prezimenom, oznakom skupine i oznakom kolegija (Programiranje I) ---------------------------------------------------------------------- ODGOVORI / RJESENJA ---------------------------------------------------------------------- //Odgovori na prva 2 pitnja mozda netocni 1. a) Visedimenzionalna polja se mogu prijaviti pokazivačima npr: Dvodimenzijonalno polje se može prijaviti sa poljem pokazivača, int *Matrica[20] je isto sto i int Matrica [][20]; b) Funkcija se prenosi u drugu funkciju kao argument koristenjem pokazivaca na funkciju npr int funkcija (int(*funkcija2)(int,int));funkcija prima pokazivac na funkciju koja prima dva podatka tipa integer. c)Struktura je slozeni tip podatka koji se sastoji od vise istovrsnih ili različitih tipova podataka. d) ako je deklarina struktura: struct student { char ime[50]; int mb; int godina; } student; scanf("%d",&student.godina); //unosi broj u element strukture godina elementima strukture pristupa se preko operatora '.' ime_strukture.ime_elementa ***************************************************************************** 2.) a)Struktura se razlikuje od polja podataka po tome sto je polje skupina podataka iste vrste, dok se struktura može sastojati od vise različitih tipova podataka. b) struct naziv_strukture { deklaracija članova strukture; }; struct je ključna riječ koja označava početak deklaracije.Naziv_strukture je identifikator. c) Član strukture je varijabla deklarirana unutar strukture. Prema mjestu deklaracije strukture određen je i doseg imena člana strukture. Ako je struktura deklarirana na početku programa,izvan svih funkcija,tada se na oblik funkcije moze pozvati iz bilo kojeg dijela programa.Deklaracijom strukture unutar funkcije ili bloka narebi područje vrijednosti nositelja strukture ograničava se na tu funkciju ili blok naredbi. Član strukture i obična varijabla u programu mogu imati isto ime. ********************************************************************************************* 3.) a) struct Complex { float Re; float Im; }; b) Complex x; Complex y; c) struct Complex { float Re; float Im; }x,y; d) Complex polje[100]; ********************************************************************************************** 4.) # include # include int usporedba (int *,int,int(*)(int,int)); int veci (int,int); int manji (int,int); main () { int i,n; int *x; puts("Koliko brojeva??"); scanf("%d",&n); //dinamičko alociranje memorije x=(int*)malloc(n*sizeof(int)); //Unos clanova polja: puts(""); puts("Unesi clanove polja:"); for (i=0;ib)?0:1); } int manji (int a,int b) { return ((a # define MAX 100 double funkcija (float[],int); main () { int n,i; float visina [MAX]; double prosjek; puts("Koliko studenata?"); scanf("%d",&n); puts("Unesi visine studenata u metrima:"); //Unos podataka for(i=0;i3 || visina [i]<0.40) { puts("????"); goto ponovno; } } //Ispis for(i=0;iprosjek) { printf("\n%d. uneseni student:%.2f m, je natprosjecno visok.",i+1,visina[i]); } } puts(""); return 0; } double funkcija (float visina[MAX],int n) { //Brojac int i; float zbroj=0; double prosjek; for (i=0;i