Trochu upresnim:
uloha 3: nejde skompilovat, pretoze sa snazim inkrementovat nenainicializovanu premennu x v strukture s.
Tu len upozornim na mozne neprijemne chyby. Nech S je struct. Zapis "S s;" je okej, naalokujem si na zasobniku strukturu, ale premenne v nej ostanu nenainicializovane. Rozdiel vo formate "S s = new S();" je ten, ze hodnoty premennych vnutri struktury sa nainicializuju na defaultne hodnoty (0, null, apod). Takisto bacha na to, ze v strukture je zakazane pretazovat bezparametricky konstruktor.
uloha 4:
Skusim napisat zdrojovy kod. Dost solidne som si pospal ked som prisiel zo skusky, tak si to uz nejak horsie pamatam.
Som si isty, ze ten kod na skuske bol bohatejsi o nejake fajnotky, no hlavny problem tejto ulohy boli staticke konstruktory.. takze na tie pozor.
Kód: Vybrat vše
class Divide
{
static Divide() // som si 100% isty, ze hlavicka konstruktoru vyzerala presne takto, aj toho co je nizsie
{
Program.dic.Add("/", 1);
}
}
class Plus
{
static Plus()
{
Program.dic.Add("+", 2);
}
}
class Program
{
public static Dictionary<string, int> dic = new Dictionary<string, int>();
static void Main(string[] args)
{
Console.WriteLine("{0}, {1}", dic["+"], dic["/"]); // tu je ten problem, zavolali sa konstruktory ?
}
}
odpoved bola, ze to padne pri behu, resp budem mat prazdny dictionary
uloha 5:
zadanie az na detaily presne to iste co bolo v piatok [Zk. 5.2.2010] (je to na fore, kliknite si)
detaily: v deklaraci boli interfacy I1 {}, I2 {}, ale pri porovnavani sa pouzivalo typeof(I1<A<int>>), typeof (I2<B<int>>), co sposobi,ze sa to neskompiluje.
uloha 9:
Tato uloha bola dost "slaughter"
ale ako nam skusajuci PJ vravel, naozaj v nej nebolo vela chyb a neboli to ziadne labuznicke zalezitosti. Chyby boli v:
hlavicka triedy PriorityQueue, bolo potrebne vynutit aby genericky typ Priorita bol potomok IComparable
deklaracia vhniezdenej triedy Node, ktora bola povodne napisana ako struct, co je samozrejme zle, pretoze by som nemohol urobit spojovy zoznam. (Stale by som si len kopiroval strukturu a ani by som sa nepohol, pri classe si pekne podavam referencie)
Porovnanie generickeho typu Priorita. bolo tam iba nieco ako priority1 <= priority2. My to ale chceme vo formate priority1.CompareTo(priority2) < 0.
Genericku premennu nemozem nastavovat na null (?). Tu som mal chybu, nie som si teda uplne isty spravnou odpovedou, pretoze si uz ani kod nepamatam. Ale aby som nastavoval generic premennu na null, tak si mozem napr vynutit, aby generic bol referencny typ (ako na to ? pozrite do slajdov, vsetko to tam je)
EDIT: zadanie 9. ulohy je odfotene na fore:
http://forum.matfyz.info/viewtopic.php?f=421&t=6553
UIRA — UIRA Isn't a Recursive Acronym.