Homework - Common type system


3
Никой още не е направил тема, така че се разписвам.

П.с.: триенето от дървото е мазало :Д



Отговори



2
Моите - ТУК :) (триенето си го спестих)

от dentia (12519 точки)


1
В индексирането на BitArray при сетването на определен бит би трябвало да е

this.Number ^= (1ul << pos); вместо this.Number ^= (1u << pos);

в противен случай максималната позиция, която може да достъпваш е 31вата.

Поправи ме, ако греша. : )

от dilyantraykov (1005 точки)

1
@dilyantraykov, не се бях замислила. Благодаря - ще го поправя. :)

от dentia (12519 точки)


2
Ето и моите решения без 6-та задача, която така и не можах да докарам докрай.

от baretata (934 точки)


1

Здравей,  на задачата с битовете при override на "Equals" проверяваш ""if(obj==null)..."  след като си го downcast-нал(следователно ползваш методите на BitArray) и директно влизаш в оператора, който си override-нал "==", който пък от своя страна те връща пак в "Equals" докато не получиш exception от тип "Object referance not set to an instance of an object". Ето и част от кода ти - http://pastebin.com/xRAn04h4


от antoanelenkov (1047 точки)

0
Да, видях си грешката.Благодаря за забележката, оправям го. :)

от baretata (934 точки)


0

Момчета и момичета, които сте готови с това домашно - може ли малко хелп с 5-та задача

Problem 5. 64 Bit array

  • Define a class BitArray64 to hold 64 bit values inside an ulong value.
  • Implement IEnumerable<int> and Equals(…)GetHashCode()[]== and !=.

Нещо не мога да зацепя смисълът на на този 64 битов масив, а не ми се ще още да поглеждам в решенията ви.

И ще съм благодарен за лека насока :)

И евентуално за 6-та задача хинт къде трябва да попрегледам за да се опитам евентуално да я направя. Предполагам, че в структурите от данни и алгоритми :)


от ivo.paunov (991 точки)


2

Обект, на който подаваш някакъв неотрицателен long и можеш да достъпваш по индекси битовете на съответните позиции :)

Трябва да му направиш индексатор, енумератор и сравнение (override на .Equals(), както и операторите за сравнение == и !=). :)


от dentia (12519 точки)

1
Трябва да приемеш едно число от тип ulong да го приемеш като масив от битове. Всеки бит ти е 1 елемент от масива.

от lnxslackware (416 точки)



0
Ето моите решения.

от newmast (116 точки)


0
+1

Аз лично си спестих дърветата ;d

от dilyantraykov (1005 точки)


1

Един кратък въпрос относно задачата със студенти:

Кои типове интерфейси е по-удобно и правилно да се имплементират при наследяване от клас като Студент : generic - IEnumerable<Т>, IComparable<Т>  (в случая Т ще е Student)  ИЛИ  просто  наследяване на  - IEnumerable, IComparable и т.н ?

Ако може и кратко пояснение и пример, благодаря.


от IvayloAndonov (1994 точки)


1

 Правилото, е че колкото ти е по Generic, толкова по-добре, защото е "type-safe". Ако имплементираш само IComparable<Student>, се задължаваш да сравняваш само студенти. Тоест няма как да хвърли exception, защото си въвел грешен тип данни. В другия случай cast-ваш "Object" към "Student" и ако параметърът, въведен в "CompareTo" не е студент, ще последва exception. Винаги има начин да измамиш, но в общия случай мисля, че е така.

Eто и го и моят код като пример: click (Аз съм наследил и двата, но дори и да има exception, той е дефиниран с мой текст и ще е доста по-лесно за дебъг)


от antoanelenkov (1047 точки)


2

Вариант и от мен - тук.

Задачи 1-3: Клас Student с имплементирани съответните интерфейси. Операторите == и != се базират на override-натия Equals. Някакъв измислен алгоритъм за GetHashCode(). 

Задача 4: Nullable променлива за age със съответната проверка в ToString().

Задача 5: BitArray64 клас, приемащ ulong число като параметър.

Задача 6: Дървото работи на магия.. :D


от svetlai (1438 точки)


2

Моето домашно.

Реализирането на дървото го има много подробно обяснено в книгата на Наков. 


от antoanelenkov (1047 точки)


0

от TodorDimitrov (757 точки)


0
Тук - от мен (без шеста задача).