You are on page 1of 3

Univerzitet u Sarajevu Rok za slanje zadaće:

Elektrotehnički fakultet Sarajevo


Osnove računarstva
5. 1. 2019. (subota)
u 23:59

Zadaća 4
Zadaća nosi 2 boda, a sastoji se od 4 zadatka. Svaki zadatak nosi po 0,5 bodova. Zadaci će biti bodovani proporcionalno broju uspješnih testova.
Oblast zadaće su stringovi (gradivo predavanja 15 i 16), a preporučljivo je i znanje predavanja 17.
U ovoj zadaći je potrebno pridržavati se i pravila za pisanje čitljivog koda (P13), u suprotnom studenti mogu izgubiti dio bodova.

Važna napomena: Ovaj dokument će možda biti mijenjan radi popravljanja grešaka.
Koristite najnoviju verziju! Na dnu dokumenta nalaziće se dnevnik izmjena.

1. (0,5 bodova) U nekom matematičkom izrazu koriste se male (okrugle), srednje (uglaste) i
velike (vitičaste) zagrade. Nakon svake otvorene zagrade mora se nalaziti odgovarajuća
zatvorena zagrada istog tipa, tako da npr. "[x)" nije legalno jer je otvorena srednja a zatvorena
mala zagrada. Unutar određenih zagrada može se nalaziti samo manji tip zagrada. Dakle, unutar
malih zagrada se ne mogu nalaziti nikakve zagrade, unutar srednjih se mogu nalaziti male, a
unutar velikih srednje i male. Također, zagrade različitog tipa se ne smiju ukrštati, tako da ni
sljedeći izraz nije legalan: "[(A])".

Napišite funkciju provjeri_zagrade koja prima string koji sadrži izraz, a vraća 1 ako su sve
otvorene zagrade uredno zatvorene te ako nema ukrštanja niti su prekršena ostala navedena
pravila, a 0 ako to nije slučaj. Za string u kojem nema zagrada također treba vratiti 1.

Napomena: Program koji ne sadrži barem pokušaj rješavanja postavljenog problema dobiće 0
bodova bez obzira na broj testova koji prolaze.

2. (0,5 bodova) Napišite funkciju zamijeni_min_max. Funkcija prima string koji predstavlja
rečenicu. Riječi u rečenici su međusobno razdvojene znakovima razmaka i uobičajenim
znakovima interpunkcije (.,!?;). Funkcija treba u datoj rečenici da pronađe najdužu i najkraću
riječ i da im zamijeni mjesta. Ako postoji više riječi iste dužine, treba odabrati onu riječ koja se
najprije pojavljuje u stringu. Samim time, ako su sve riječi iste dužine, prva riječ je ujedno i
najduža i najkraća, tako da ne treba uraditi ništa. Funkcija treba vratiti pokazivač na početak
stringa radi lakšeg lančanog pozivanja.

Primjer: Ako rečenica glasi:


"Ovo je primjer recenice sa dugackim, kratkim rijecima."
Nakon poziva funkcije rečenica treba glasiti:
"Ovo recenice primjer je sa dugackim, kratkim rijecima."

3. (0,5 bodova) Napisati funkciju dvostruko koja prima string koji predstavlja neki tekst, a zatim
sve brojeve koji se nalaze u tekstu množi sa dva. Funkcija treba vratiti pokazivač na početak
primljenog stringa radi lakšeg lančanog pozivanja.
Pod pojmom "broj" podrazumijeva se bilo koji neprekinuti niz cifara 0-9. Pretpostavite da su svi
brojevi cijeli. Primijetite da će funkcija raditi ispravno i sa negativnim brojevima ako samo
zanemarite minus. Pretpostavite da je primljeni string dovoljno velik da primi sve eventualne
dodatne cifre.

Primjer: Ako je primljeni string glasio:


"U ovoj recenici se nalazi broj 4, broj 8 i broj 88"
nakon poziva funkcije string treba glasiti:
"U ovoj recenici se nalazi broj 8, broj 16 i broj 176"

NIJE dozvoljeno koristiti funkcije iz biblioteka string.h i stdlib.h, kao ni funkcije sprintf i sscanf iz
biblioteke stdio.h.

4. (0,5 bodova) Gradski prevoznik iz Sarajeva je odlučio da instalira alfanumeričke displeje na


tramvajske stanice kako bi informisao putnike o vremenima dolazaka tramvaja. Svaki karakter
koji se prikazuje na displeju je veliko slovo engleskog alfabeta. Kako bi se karakteri bolje vidjeli
sa druge strane saobraćajnice, proizvođač displeja je povećao karaktere na način da se svaki
karakter prikazuje pomoću LxN proizvoljnih simbola.

Na primjer, ako na displeju želimo prikazati natpis “Otoka”, ispisat ćemo:

# ### # # # #
# # # # # # # # #
# # # # # ## ###
# # # # # # # # #
# # # # # # #

Vaš zadatak je da napišete program koji će sa standardnog ulaza učitati dimenzije karaktera,
riječ koju treba ispisati i alfabet, a na standardni izlaz ispisati riječ na način kako bi izgledao njen
prikaz na displeju. Ako se u riječi pojave mala slova engleskog alfabeta, ona treba da budu
prikazana kao velika slova. Ako se u riječi pojavi neki znak koji nije veliko ili malo slovo
engleskog alfabeta (n.pr. broj ili razmak), taj znak treba prikazati kao rezervisani karakter.

Na standardnom ulazu nalaze se sljedeći podaci:


Linija 1: širina karaktera (0 < L < 30) koji se prikazuje na displeju. Svi karakteri su iste širine.
Linija 2: visina karaktera (0 < H < 30) koji se prikazuje na displeju. Svi karakteri su iste visine.
Linija 3: riječ sastavljena od N karaktera (0 < N < 200) koju treba prikazati na displeju.
Narednih H linija: grafički prikaz karaktera koji formiraju alfabet
ABCDEFGHIJKLMNOPQRSTUVWXYZ?, gdje je ? grafički prikaz rezervisanog karaktera, tj.
karaktera koji nije veliko ili malo slovo engleskog alfabeta (npr. broj ili neki specijalni znak).

Primjer ulaza i izlaza:


4
5
Otoka
# ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ###
# # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # # # # # #
### ## # # # ## ## # # ### # # ## # ### # # # # ## # # ## # # # # # # ### # # # ##
# # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ### # # # #
# # ## ## ## ### # ## # # ### # # # ### # # # # # # # # # ## # ### # # # # # # ### #

# ### # # # #
# # # # # # # # #
# # # # # ## ###
# # # # # # # # #
# # # # # # #

Izmjene:

● 25.12.2018 9:20 - dodato pojašnjenje u drugom zadatku šta treba


raditi ako su sve riječi iste dužine

You might also like