Софтуерно Инженерство
Loading...
+ Нов въпрос
MiBuena avatar MiBuena 7 Точки

[C#] Problem 10. FamilyTree***

Здравейте,

ето това е моето решение на задачата, което дава 80т. Гърми ми последният тест.

Със сигурност моето не е най-оптимално направено.

Ще се радвам, ако има някой, който да сподели по-добре направено решение, което дава и пълните 100т. :)

Тагове:
0
C# OOP Basics 08/08/2016 15:17:34
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

".FirstOrDefault", ".Any" и подобните на тях са доста приятни за използване, но не правят магии. За да се изпълнят - обхождат. Ако може да ги спестиш се опитвай да го правиш. Имаш много if-ове, в които за да се влезе обхождаш колекцията си, и като влезеш - пак я обхождаш. Дори и да не влезеш, пак е обходена от - до.

За съжаление в логиката ти има мааалка дупка. Представи си следния инпут:

24/8/2000
21/2/1950 - 11/11/1111
Gosho2 Goshev - Stamat Peshev
Stamat Peshev 21/2/1950
End

 

Четем 1ви ред. Добавяме 2 Person-а в листа със съответните дати.

Четем 2ри ред. Добавяме нови 2 Persona в листа със съответните имена.

Обаче вече имаме проблем. Реално 1вата дата от 1вия ред и 2рото име от 2рия ред принадлежат на един и същ човек.

 

Ето моето решение. Може би не е най - елегантното и си има своите минуси в логиката.

В началото дефинирам 2 листа. Единия държи People, за които е дадена пълна информация (инпут без "-"). Втория държи инпутите с тирета. Реално след като прочета целия инпут, разполагам с List<Person> с всички хора и List<string> с връзки между хората. Това е и минуса. Заделя се памет за колекция, която съдържа инпут стринговете, които имат "-" и после се обхожда тази колекция.

http://pastebin.com/iYBiEzps

 

Поздрави!

0
MiBuena avatar MiBuena 7 Точки

Здравей, 

благодаря много за коментара. Аз много се чудех как може да се избегне това да се добавят направят 2 записа реално на един и същи и човек. Това е начинът - с 2 колекции.

Много добра логика и решение! 
Благодаря отново за подробното мнение!

0
08/08/2016 21:36:02