Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

shady_obeyd avatar shady_obeyd 50 Точки

C# OOP Basics - February 2018 - Interfaces And Abstraction Exercise - 08.Military Elite

Здравейте! Някой може ли да помогне с 0.8 Military Elite -> трети тест гърми с недостатъчна памет ? Благодаря предварително!
Решение

EDIT: Пренаписах изцяло Main метода - премахнах case insensitive проверките, разкарах Linq, но оптимизацията падна с едва 6 MB. Не знам какво изпускам...

Тагове:
0
C# OOP Basics 02/03/2018 19:57:09
simeon3000 avatar simeon3000 264 Точки

В StartUp, в метода GetPrivates, опитай с break; на вътр. цикъл.

0
shady_obeyd avatar shady_obeyd 50 Точки

Не става, пак гърми с недостатъчна памет.

0
dobroslav.atanasov avatar dobroslav.atanasov 247 Точки

Здравей,

Доста време гледах задачата и не мога да открия от къде гърми за памет. Направи ми впечатление, че Id ти е string, а трябва да е int. (Не вярвам това да е грешката)
Ето моето решение, надявам се че ще успееш да откриеш грешката си: https://github.com/dobroslav-atanasov/CSharp-OOP-Basics/tree/master/10.InterfacesAndAbstraction-Exercises/08.MilitaryElite

0
MilenaSl avatar MilenaSl 161 Точки

Забелязвам, че не са използвани интерфейси, а в условието е bold-нато за всеки тип да има. Това с недостатъчната памет ми прилича баш на някаква такава проверка.

Предлагам с копи-пейст набързо да създадеш инферфейси и за нула време да ги имплементираш в класовете си. Заповядай:

https://github.com/MilenaPetkanova/csharp-oop-basics-softuni/tree/master/0502-Interfaces-And-Abstraction/0508-Military-Elite/Interfaces

1
shady_obeyd avatar shady_obeyd 50 Точки

И аз се замислих, че точно това може да е проблема и точно това ще направя. Благодаря! 

1
dimitrova_elka avatar dimitrova_elka 2 Точки

Има и по-мързелив начин - с рефактор: При вече направен клас Visual Studio има начин да извади интерфейс с Ctrl+R+I като предлага кои пропъртита и методи да включиш в интерфейса. Резултатът е интерфейс, който вече е имплементиран.

1
shady_obeyd avatar shady_obeyd 50 Точки

След три дни мъки отстраних проблема - Грешката ми беше, че при невалиден корпус при инженера или командоса, влизах в безкраен цикъл, защото с continue цикълът тръгваше отначало, без инпута да се промени, съответно инпута винаги остава един и същ и винаги е различен от End. Преди continue сложих да чете отново инпута от конзолата и мина с 100 / 100. Благодаря на всички за помощта! :)

1
simeon3000 avatar simeon3000 264 Точки

Да, сам си открил проблема, което е най-готино. :)

Ще си позволя една забележка - ползването на continue го намирам за лоша практика. Аз се опитвам така да си изграждам логиката, че да не ми се налага употребата. Както и break за щяло и нещяло, да не говорим за goto. Не винаги е възможно и понякога без тях кодът ще стане още по-трудно четим.

В задачи като тези, където не ни интересува "лош" изход, тоест без else, просто ще набутам всичко в if(true), нищо че ми се отмества кода с една табулация.

1
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

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

1
shady_obeyd avatar shady_obeyd 50 Точки

Благодаря за забележката! Според мен е въпрос на лично предпочитание как дали да е с continue или if(true), но в случая щеше наистина да е по-добре, както ти предлагаш.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.