zapocet 25.1.2008 14:00

Pokročilé vlastnosti jazyka C++, jejich použití pro objektové programování. Dědičnost, virtuální metody, Dynamická alokace. Šablony, generické programování, kompilační polymorfismus. Výjimky. Objektové knihovny, uživatelské kontejnery a iterátory, návrhové vzory. Nízkoúrovňové implementační techniky a konstrukce.
Uživatelský avatar
nardew
Matfyz(ák|ačka) level II
Příspěvky: 59
Registrován: 2. 11. 2006 10:15
Typ studia: Informatika Bc.
Bydliště: Otava - Jizni Mesto

zapocet 25.1.2008 14:00

Příspěvek od nardew »

No ladies, takze report z dnesneho zadania:
Na vstupe mame dany orientovany graf. Vrcholy su rozdelene na vstupne, vystupne, a obycajne. Kazdy vrchol ma ulozenu operaciu a faktor, ktore pouzije vzdy na signal ktory cezen prechadza; prichodzi signal podla spominanej operacie a faktoru zmodifikuje a rozosle dalej. Aj hrany maju takisto takyto udaj, ktorym modifikuju prechadzajuci signal po danej hrane. Na zaciatku su dane velkosti signalu, ktory sa nachadza vo vstupnych vrcholoch a potom siet "spustime". Spustit znamena, ze signal sa zacne postupne sietou sirit, pricom sa moze zoslabovat/zosilnovat, pricom je dolezite, ze sirenie signalu sietou je paralelne! Teda nemozeme jednotlive spracuvavania signalu na hranach spracuvavat sekvencne po jednom, ale v kazdom tiku vsetky naraz, pricom ak do jedneho vrcholu budu v jednom tiku vstupovat naraz viacere signaly, scitaju sa. Siet sa zastavi, ked sa signal dostane do kazdeho vystupneho vrcholu. Nasou ulohou bolo vypisat hodnoty signalu vo vystupnych vrcholoch po zastaveni siete. Pricom ked signal prechadza cez obycajny vrchol, tak sa len zmodifikuje a posle dalej, ked prechdza cez vystupny vrchol, tak sa v tomto vrchole ponecha aktualna hodnota a signal sa rozosle dalej. Graf je cyklicky, teda signal sa moze v niektorych cykloch dookola zvacsovat/zmensovat a modifikovat vystupne vrcholy, ale to len dovtedy, dokym nejakou vetvou nedojde aj k poslednemu vystupnemu vrcholu.

Vstup vyzeral takto:
[I/O/X],[+/-/*//]faktor
...
prazdny riadok
start,ciel,[+/-/*//]faktor
...
prazdny riadok
vstupny_vrchol,pociatocna_hodnota

udaje az po prvy prazndy riadok reprezentuju vrcholy v grafe, kde X I O oznacuje, ci je vrchol normalny/vstupny/vystupny, za nim ide operaciu ktoru dany vrchol vykonava a za nou faktor.
udaje po druhy prazdny riadok predstavuju hrany spolu s operaciou a faktorom.
nakonci je zoznam vstupnych vrcholov spolu s pociatocnymi hodnotami

teda pre vstup

Kód: Vybrat vše

I,+1
X,*2
X,*2
O,*2

0,1,*2
0,2,+5
1,3,-1
2,3,-2

0,5
by to malo dat vysledok

Kód: Vybrat vše

3: 86
ak sa nemylim. ukazovat sme mu to mali na jeho velkom testovacom vstupe. mohli sme predpokladat korektny vstup a ze do kazdeho vystupneho vrcholu existuje aspon nejaka cesta z aspon jedneho vstupneho vrcholu.

odchdzal som presne na minutu po troch hodinach, zatial sme to dali len traja(alebo styria)
Uživatelský avatar
baracudafish
Matfyz(ák|ačka) level I
Příspěvky: 2
Registrován: 22. 1. 2008 01:55
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Re: zapocet 25.1.2008 14:00

Příspěvek od baracudafish »

tos. podarilo sa po 3.5 hodinax.
originaly testovaci vstup bol navrhnuty tak, aby vyvolal vynimku na delenie nulou ( ked to bolo spravne osetrene ) takze ak ten program zbehol, tak to bolo vlastne zle a neskor donho dodal aj hranu z vrcholu na ten isty vrchol. vsetky vystupne vrcholy mali modifikator "* 0" => vystup bol aj tak vzdy 0, 0, 0, 0. mne osobne trvala implementacia algoritmu 15 min, ale predtym som 2.5 hodiny pisal datove struktury.

dodany testovaci vstup :
vstup.txt
testovaci vstup
(488 bajtů) Staženo 349 x
moj zdrojak - neefektivny, ale snad sa v nom bude dat vyznat :
main.cpp :
baracuda.cpp
(2.76 KiB) Staženo 329 x
fce.cpp :
fce.cpp
(1.19 KiB) Staženo 334 x
fce.h :
fce.h
(866 bajtů) Staženo 335 x
vela zdaru v dalsix kolax...
Odpovědět

Zpět na „PRG032 Objektově orientované programování“