Проблем със задача 08. Mentor Group от Класове и обекти
Здравейте,
Мога ли да помоля някой добър човек за малко помощ с посочената в заглавието задача? Мъчих я, гледах я, но не мога да докарам до повече от 50/100. Според мен, има някаква проверка на входящите данни, която не хващам. Например, когато въвеждам коментарите, може ли да има такава заявка, при която да има Username и коментари, които са празни стрингове.
Пример:
username- - - при такъв сценарий, имам username и два стринга, в които има по един спейс. Тези пропускам ли ги, печатам ли ги? Направих проверка за тях и не помогна. Също проверих и за празни стрингове без спейс (просто input = Username--- ).Значи най-вероятно не е това. Но все пак.
Ето какво съм написал до тук: https://pastebin.com/7UjXTA4e
Благодаря
Здрасти. Логимата ми е, че първо се уверявам, че изобщо имам студент, на който после да проверя, дали има записана, датата на която е присъствал.
- създай
- парсни дата (минивам през всички дати)
- ако няма така, добави
Както го описваш, ако имам първо ентри за някакъв студент и са ваведени две (или повече) еднакви дати, тогава няма да го хвана, ако разбирам правилно.
колегата ти е подсказал но нищо не си разбрал. Значи датите ама хич не ти влият. Проверяваш студента по име ако го нямаш и ти върне празен обект просто го добавяш ако ти върне студент които същестува просто ще му презапишеш данните или каквото е там по условие. Не си дал условието а на работа не ми се ровеше и се ориентирам по кода на колегата.Тея безумни проверки дето ги правиш са излишни. Все пак мога да ти дам 2 различни студента с една дата на присъствиеи тн примерно и и твоите проверки ще те изгърмят още там.
спри прочети условието и започни наново най-добре.
Здрасти. Погледнах оригиналната бележка на колегата. После той е едитвал, така че по-кротко. :) А сега по същество - благодаря ти за усилията и на теб.
1. По въпросът с условието - за първи път пускам във форума и още се уча. Да разбирам, че иконката с двете стрелки една под друга в коментарът на колегата означава, че е имало едит в еди кой си момент? А за самото условие, ако го бях плеснал като текст например, имам ли гаранция, че някой няма да каже "Защо си го плеснал? Нали си дал името на задачата. Ние не сме малки деца. Можем да си го намерим" и тн.
2. И по-важно - наистина искам да разбера твоят коментар за двамата студенти и двете еднакви дати. В самото условие на задачата има само един пример и той е такъв:
nakov 22/08/2016,20/08/2016
simeon10 22/08/2016
end of dates
В кодът на моя ОП, макар и неелегантни, проверките записват правилно и двата реда. Какво точно имаш предвид? Питам те най-сериозно и ще се радвам на твоят коментар, защото усещам, че между самото писане и разбирането добре на условието на коя да е задача, за сега повече проблеми имам със второто. Благодаря предварително. Станислав
Здрасти. Много благодаря за коментарите и за усилията. Сериозният ми проблем беше, че не съм разбрал добре условието.
1. Да, не пише, че не може да има две еднакви дати за един и същи студент, но то няма логика. За какво да записвам две еднакви дати за един студент? Ако това е присъствие, как се връзва? Тук грешката излиза моя, защото допълвам условието.
2. По въпросът със Лист<стринг> за коментарите във 2-рата част, след като махнах проверката за повече от един коментар и се оправи. Но като ми изгърми код и ми даде 50/100, аз започвам да мисля, коя проверка не съм хванал. Можеше да има повече от един коментар (отделени с '-') и аз да не съм го сплитнал. Не знам, понеже не виждам инпута на тестовете. Най-малкото, самият факт, че ще записвам коментарите в лист, води и към такъв евентуален извод. Важното, което искам да питам по този въпрос е това. Защо кодът с проверката на това, колко коментара има и ако има поне един, да ги пълни в лист ми гърми? (вероятно има коментар, който има по средата '-' и се сплитва на два отделни части, което ще хвърли грешка).
Благодаря. Станислав
както казах няма нужда да проверяваш датите за теб студента е валиден ако съществува,да го проверяваш не ми се обеснава но нямам и време на работа затова ето :
https://pastebin.com/4xKYUHNi простичко и обяснено решението ми от миналата година общо взето имаш много излишен код излишни проверки и безумна логика.
Здравей,
Само един съвет имам: Когато си готов (докъдето си готов) с някакъв код, се опитай се да го оптимизираш да стане по-четим и по-близък до условието, така че когато започнеш да четеш условието - буквално да го виждаш на екрана в кода си. Когато аз правя това, много често виждам неща, които съм пропуснал в условието.
"Защо кодът с проверката на това, колко коментара има и ако има поне един, да ги пълни в лист ми гърми? "
Конкретно на въпроса ти, можеш ли да дадеш изчистен код, в който само описаното "гърмене" е проблем и под "гърми" се разбира crash, нали?
Ето кодът, който ми дава 90/100 (това имам предвид под гърми :) ), след като съм спрял да проверявам, дали датата се повтаря или не - https://pastebin.com/yaw1ieUm
В него съм отбелязал частта, където търся n на брой коментари. Ако я изтрия и допусна, че коментара е само 1, ми връща 100/100.
Правилното ми решение -
https://pastebin.com/tuiCvTSd
Здравей,
разбирам въпроса ти. Не мисля, че е възможно по начина, по който е направено.
Да кажем, че ще успеем да отпечатаме правилно този лист който имаме, имитирайки стринг като:
1. Отпечатваме "- " само преди 1 вия елемент и то само ако има такъв
2. За всеки следващ елемент, преди него слагаме '-', защото сме сплитнали и вече тиретата липсват.
Използваме Console.Write, за да не правим нови редове.
3. След последния елемент слагаме Console.WriteLine();
Тоест имитираме поведението което бихме имали, ако печатахме стринг.
Друг вариант е да използваш String.Join("-", student.Comments), но честно казано аз не знам как ще се справиш, ако входът изглежда така:
nakov-Excellent algorithmetic thinking ----- aaa-bbb. Тези тирета не мисля, че ще ги върнеш и някак си трябва да ги има в листа, което пък вече съвсем няма смисъл :)
Задачата е замислена да работи със стринг, а не лист от стрингове.
Само за протокола: ако при сплитването се използва StringSplitOptions.None, може да се възстанови напълно с join.