Kolokvij
4. sušca. 1999
Kolokvij sestoji iz devetih nalog, katerih skupno število točk je 100. Vrednosti posameznih nalog so naznačne v spodnji tabeli.
Čas pisanja je 1 ura in pol (90 minut).
Na kolokviju je dovoljena uporaba zapiskov a nikakor ,,dobrososedske`` pomoči.
Predno pričnete pisati, spodaj vpišite svoje ime in priimek ter se podpišite.
NALOGA:
NALOGA:
void NekajNaredi (in par1, int par2[100]);
NALOGA: Spodaj je napisano telo funkcije, ki skrbi za vlečenje kart. V telesu funkcije je napisano le kaj počne, vi pa dopišite kako to naredi - t.j. napišite kodo funkcije. Pri tem upoštevajte, da je na vrhu kupa kart karte[0], naslednja karta je karta[1] itd. Karta i ima vrednost karta[i].
int VleciKarte(int karte[52]) { /* nastavi zacetno vsoto na 0 */ /* dokler vsota kart ne preseze 21 */ /* izvleci karto */ /* in pristej njeno vrednost vsoti */ /* vrni vsoto zmanjsano za 21 */ } /* VleciKarte */
NALOGA:
void IzpisiKarto(int karta) { /* Desc: Funkcija izpise na stdout opis slike na karti, ki ima dano vrednost. Parms: karta - vrednost karte (po vrednosti) Result: - Pre: - Post: opis karte je izpisan na stdout */ if (karta == 14) printf("as"); else if (karta == 13) printf("kralj"); else if (karta == 12) printf("dama"); else if (karta == 11) printf("fant"); else if (karta == 10) printf("desetica"); else if (karta == 9) printf("devetica"); else if (karta == 8) printf("osmica"); else if (karta == 7) printf("sedmica"); else if (karta == 6) printf("sestica"); else if (karta == 5) printf("petica"); else if (karta == 4) printf("stirica"); else if (karta == 3) printf("trojka"); else printf("dvojka"); } /* IzpisiKarto */
NALOGA: Prepišite zgornjo funkcijo z uporabo stavka switch.
int main(void) { int karta; for (karta= 2; karta < 20; karta++) { IzpisiKarto(karta); printf("\n"); } return 1; } /* main */izpisal:
dvojka trojka stirica petica sestica sedmica osmica devetica desetica fant dama kralj as dvojka trojka stirica petica sesticasaj meni, da se najprej izpise prvi niz kart, nato drugi in tako naprej. Toda izpiše se:
dvojka trojka stirica petica sestica sedmica osmica devetica desetica fant dama kralj as dvojka dvojka dvojka dvojka dvojka
NALOGA:
NALOGA: Napišite funkcijo Fakulteta, ki bo izračunala n! s pomočjo rekurzije.
#include <stdio.h> int Nekaj (int a, int b) { if (b == 0) return a; else return Nekaj(b, a % b); } /* Nekaj */ int main (void) { printf("%d \n", Nekaj(77, 22)); return 0; } /* main */
NALOGA: Kaj izpiše program?
DODATNA NALOGA: Znate opisati bolj splošno, kaj dela program?
4 OOOO 9 OOOOOOX 7 OOOOOOO 0 2 OO
NALOGA: Napišite podprogram TracniDiagram, ki bo izrisal tašen tračni diagram.
void TracniDiagram (int stKolicin, int kolicine[MAX_KOLICIN], int najvecjaDolzina) { /* Desc: Funkcija izrise tracni diagram za stKolicin kolicin, ki so shranjene v tabeli kolicine. Pri tem uposteva, da je najdaljsi trak diagrama lahko dolg najvecjaDolzina znakov. i-ta vrstica diagrama predstavlja i-to kolicino iz tabele kolicin kolicine (0 <= i < stKolicin). Vrstica se pricne s stevilsko vrednostjo i-te kolicine, ki jo izpisana na 5 mest natancno. Sledi presledek in nato trak sestojec iz znakov O in dolzine enake velikosti i-te kolicine. Ce je ta kolicina vecja od najvecjaDolzina, je trak dolg najvecjaKolicina znakov, od katerih je zadnji znak X. Parms: stKolicin - stevilo kolicin v tabeli kolicine (po vrednosti) kolicine - tabela kolicin (po referenci) najvecjaDolzina - najvecja dolzina traku (po vrednosti) Result: - Pre: (0 <= stKolicin < MAX_KOLICIN) AND (0 < najvecjaKolicina) AND (FOR 0 <= i < stKolicin: kolicine[i] >= 0) Post: (tracni diagram je izpisan) AND (kolicine' = kolicine) */
} /* TracniDiagram */