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.

zapocet 25.1.2008 14:00

Příspěvekod nardew » 25. 1. 2008 17:53

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
nardew
Matfyz(ák|ačka) level II
 
Příspěvky: 59
Registrován: 2. 11. 2006 10:15
Bydliště: Otava - Jizni Mesto
Typ studia: Informatika Bc.

Re: zapocet 25.1.2008 14:00

Příspěvekod baracudafish » 26. 1. 2008 12:16

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ů) 192 krát

moj zdrojak - neefektivny, ale snad sa v nom bude dat vyznat :
main.cpp :
baracuda.cpp
(2.76 KiB) 162 krát

fce.cpp :
fce.cpp
(1.19 KiB) 163 krát

fce.h :
fce.h
(866 bajtů) 163 krát


vela zdaru v dalsix kolax...
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.


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

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník