Tutorijal_6

Preview:

DESCRIPTION

C++ laksi zadaci

Citation preview

  • Dr. eljko Juri: Tehnike programiranja /kroz programski jezik C++/ Tutorijal 6 Zadaci predvieni za rad na laboratorijskim vjebama uz pomo tutora Akademska godina 2014/15

    1

    Zadaci za Tutorijal 6. NAPOMENA: Studenti bi trebali da razmisle o zadacima koji e se raditi na tutorijalu prije nego to dou na tutorijal, tako da ve u startu imaju osnovne ideje kako rijeiti zadatke. U suprotnom, rad na laboratorijskim vjebama nee biti produktivan. Zadatke koje studenti ne stignu uraditi za vrijeme tutorijala, trebali bi ih samostalno uraditi kod kue.

    1. Napiite funkciju sa jednim parametrom n, koja dinamiki alocira niz od n cijelih brojeva, popunjava ga sa prvih n stepena broja 2 (stepeni dvojke su redom 1, 2, 4, 8, 16 itd.) i vraa kao rezultat pokaziva na prvi element tako alociranog niza. U sluaju da je n 0, funkcija treba da baci tekst Broj elemenata mora biti pozitivan kao izuzetak, a u sluaju da alokacija ne uspije, funkcija treba da baci tekst Alokacija nije uspjela kao izuzetak. Napisanu funkciju iskoristite u testnom programu u kojem se sa tastature unosi broj n, zatim poziva napisana funkcija za kreiranje traenog niza, koji se potom ispisuje na ekran, i na kraju se vri oslobaanje prostora koji je zauzeo niz. Pored toga, u glavnom programu treba predvidjeti hvatanje svih izuzetaka koji bi funkcija eventualno mogla baciti.

    2. Napiite generiku funkciju iji je parametar vektor elemenata proizvoljnog tipa. Funkcija prvo treba da dinamiki kreira niz iji su elementi istog tipa kao i zadani vektor i koji sadri isti broj elemenata kao i zadani vektor. Funkcija zatim treba prepisati sve elemente vektora u kreirani niz u obrnutom poretku (tj. prvi element vektora treba da postane posljednji element niza itd.) i vratiti pokaziva na prvi element tako kreiranog niza kao rezultat. Napiite i mali testni program u kojem ete demonstrirati kako se upotrebljava napisana funkcija na vektoru realnih brojeva iji se elementi unose sa tastature.

    3. Napiite funkciju sa jednim cjelobrojnim parametrom n koja vri dinamiku alokaciju grbave matrice sa n redova u kojoj prvi red sadri samo element 1, drugi red elemente 1, 2 i 1, trei red elemente 1, 2, 3, 2 i 1, etvrti red elemente 1, 2, 3, 4, 3, 2 i 1, itd. Kao rezultat, funkcija vraa dvostruki pokaziva preko kojeg se moe pristupiti elementima tako kreirane grbave matrice. Ukoliko je n negativan ili 0, funkcija treba baciti izuzetak tipa domain_error, uz odgovarajui pratei tekst koji moete odabrati po volji. U sluaju da alokacija ne uspije, funkcija treba baciti izuzetak tipa bad_alloc (to je uobiajeno ponaanje u sluajevima kada alokacija ne uspijeva), pazei pri tome da ne doe do curenja memorije ni u kakvim okolnostima. Napisanu funkciju iskoristite u isjeku programa koji trai da se sa tastature unese broj n, zatim kreira grbavu matricu traenih svojstava sa n redova, te na kraju ispisuje njene elemente red po red nakon ega oslobaa prostor koji je zauzela ta matrica. Predvidite i hvatanje svih izuzetaka koji bi funkcija eventualno mogla baciti.

    4. Napiite generiku funkciju koja kao svoj parametar prima dvodimenzionalnu strukturu (recimo matricu, ali pri emu broj elemenata u svakom redu ne mora nuno biti isti) predstavljenu kao vektor vektr iji su elementi proizvoljnog tipa. Funkcija prvo treba da dinamiki alocira prostor za dvodimenzionalnu strukturu identinog oblika kao i parametar, zatim da u nju prepie elemente dvodimenzionalne strukture predstavljene parametrom i, konano, da kao rezultat vrati dvojni pokaziva preko kojeg se moe izvriti pristup elementima ove strukture. Za alociranje koristite metod fragmentirane alokacije. U sluaju da doe do problema sa alokacijom memorije, funkcija treba baciti izuzetak (tipa bad alloc). Pri tome, ni u kom sluaju ne smije doi do curenja memorije. Napisanu funkciju testirati u testnom programu koji sa tastature unosi elemente matrice formata 3

    3 organizirane kao vektor vektr, a nakon toga poziva

    napisanu funkciju sa ciljem kreiranja odgovarajue dinamike matrice i, konano, ispisuje elemente tako kreirane dinamike matrice na ekran i oslobaa zauzetu memoriju. U testnom programu predvidite i eventualno hvatanje baenih izuzetaka.

    5. Ponovite prethodni zadatak, ali uz koritenje kontinualne umjesto fragmentirane alokacije.