OO1PP2 – DZ2 Rok
za izradu: 08.05.2007.
PRAKTIKUM IZ PROGRAMIRANJA 2
- domaći zadatak broj 2 -
Sastaviti program na
programskom jeziku C kojim se vrši određena vrsta obrade nad
znakovnim nizom (u daljem tekstu, string). Program treba da repetitivno
učitava sve potrebne ulazne podatke, ispisuje ih po učitavanju,
izvršava zahtevanu obradu, ispisuje sve dobijene rezultate, i ponavlja
navedene korake sve dok se za ulazni string ne unese „dosta Brus Li″.
Zavisno od rednog broja problema,
sastaviti jedan od sledećih programa, kojim se:
Predvideti
maksimalnu dužinu stringa (MAX_DUZ_STR) pri deklaraciji stringa, a u toku
rada proveravati da li je uneta dužina stringa takva da se svi elementi
mogu smestiti u string predviđenih dimenzija. Smatra se da se string
zadaje u jednom redu teksta koji se čita sa standardnog ulaza (u string
ulaze svi znakovi do '\n', ne uključujući i '\n'). Obradu treba
vršiti nad kopijom stringa, a pri ispisu rezultata na izlaz ispisati i neizmenjeni
original i izmenjenu kopiju. Pre odbrane, student mora imati spremna makar
tri suštinski različita test primera i očekivane rezultate.
Važno: kada se uspešno reši
osnovni zadatak, modifikovati osnovni program tako da ne postoji
ograničenje u dužini stringa koji može da se unese. Pošto dimenzije stringa nisu poznate
unapred, memorija predviđena za string se mora dinamički alocirati.
Količina memorije koja je odvojena za string mora biti takva da
iskorišćenje bude potpuno (ni bajt više, ni bajt manje).
Realokaciju vršiti uvek kada je potrebno, i prilikom unosa stringa i
prilikom obrade. U toku
rada, prilikom svake alokacije ili realokacije dinamičke memorije,
proveravati uspešnost poziva alloc
funkcije. U slučaju neuspešne dodele dinamičke memorije, u
glavnom programu ispisati poruku o grešci i prekinuti izvršavanje.
Nakon svakog ciklusa programa (unos, ispis unetih podataka, obrada, ispis
dobijenih rezultata) dealocirati svu dinamičku memoriju.
Napomene:
1.
Termin
odbrane drugog domaćeg zadatka studenti mogu videti na sistemu WebLab.
2.
Formula
za redni broj problema i koji treba rešavati je sledeća (R –
redni broj indeksa, G – poslednje dve cifre godine upisa): i
= (R + G) mod 8
3.
Kao
rešenje domaćeg zadatka potrebno je na odbrani pokazati sledeće
datoteke:
·
dz2.c, koja sadrži izvorni tekst osnovnog
programa na programskom jeziku C;
·
dz2_mod.c, koja sadrži izvorni tekst izmenjenog programa na programskom jeziku
C;
·
dz2_test.txt,
koja sadrži test primere (ulaz i očekivani izlaz);
25.04.2007. godine sa predmeta