Loading...
SvilenPavlov avatar SvilenPavlov 11 Точки

Programming Fundamentals - Dictionaries Exercises - 6. User Logs

Здравейте!
Трябва да призная, че речниците са ми доста трудни. Особено като трябва да пазя 3 променливи за всяко ентри.
От лекцията в май 18 така и не разбрах как да ползвам вложени речници, в записа от упражненията също нямаше нищо за тази задача.

Получавам 63/100 и нямам никаква представа защо.
Бихте ли помогнали?

Код: https://pastebin.com/MxqTARNi

Условие:https://tinyurl.com/y8e832ua

Тагове:
0
Programming Fundamentals
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
Best Answer

https://pastebin.com/eKU5WUSp много сложно ето го набързо.

сега по кода, 1 вложен речник е достатъчен, в тях няма нищо сложно като нормалните речници имаш ключ в случая е името на user-a и срещу него стой като стойност 2ри речник които ти държи ip и count.

Toва да ползваш sorteddictionary е добра идея спестяваш си едно сортиране после надолу. След това какво се случва надолу по кода, проверяваш дали имаш user-a ако нямаш го добавяш слагаш му и речника и попълваш текущото Ip s count 1. ако го имаш user-a но нямаш ip-то просто добавяш новото ip като стойност в вътрешния речник, и последната проверка е ако съществуват user-a и  ip само да увеличиш броя логвания от текущото Ip.

накрая с 2 foreach-a печаташ, тук защо използвам stringbuilder ами по бързо е а и честно казано отдавна исках да пробвам едни неща с него и това беше удобен случай да видя кое как работи. В крайна сметка пак използвам като теб 2 counter-a и в един тернарен оператор които се явавя като booleаn си добавям записа с . или  , зависи дали е последния запис на тоя user, накравя печатам резултата  на user-a зачиствам си stringbuilder-a и наново докато ги извъртя всичките.

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

dictionary<string,dictionary<string,List<dictionary<int,int>>> нещо си  и такива подобни = ... но нали се сещаш че ако се опитваш да достъпваш манипулираш такива колекции е безумие и ще стане ужас в един момент.

-1
SvilenPavlov avatar SvilenPavlov 11 Точки

Мерси за кода, брат!

В презентация просто не видях синтаксиса за инциализиране и после за достъпване. А то било мн просто -dict[a][b], като матрици.
 

Другото трики място, за което ми помогна е принтирано. Мн лесно се бъркам с това кое трябва да е var и in във втория цикъл и се чудя и се мая, като дойде време за Console.Writeline($" {коя променлива?.values/value?}") защо не ми дава.
 

Всички казват, че рядко се ползват вложени речници, но в тая задач ми се струва, че е най-лесния вариянт. Има ли по-лесен без вложен?

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ами един списък с обект user в които да си държиш  list  с ip от които е писал нещо такова.

А речниците нямат нищо общо с матриците матриците са многомерен масив докато речника ти е масив построен на ключ/стойност и тн.  В речника няма как да направиш един for цикъл защото всичко ти е хеширано. a матрицата спокойно си я обикалящ цялата с 2 вложени цикъла. Не бъркай нещата.

За принтирането вариантите са много въпрос какво искаш да правиш, единственото което ти трябва да запомниш е че винаги лявата променлива в речника ти е ключа другото стойноста другото с малко дебъг се наглася, е примерно това принтиране го направих за 10 мин с 3 дебъга защото пробвах как работи sb.appendformat и се оказа че искат резултатите на един ред а уорд документа малко ме заблуди но това се хваща лесно.

-1
SvilenPavlov avatar SvilenPavlov 11 Точки

За матриците - споко, знам я разликата.
Приликата за мен е в това, че достъпа става пак с [a][b], както и в матриците, нали така?
Принтирането ищом и ти го нагласяш с дебъгването,  значи няма страх.
За тоя стринг билдър дори не го погледнах, че речниците гледам да науча. Мерси все пак!

0
EricDraven avatar EricDraven 275 Точки

Направо се загубих в кода ти :)

тази задача се решава много лесно с вложен речник, а ти не ползваш вложени речници

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

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Точно така! 
"От лекцията в май 18 така и не разбрах как да ползвам вложени речници, в записа от упражненията също нямаше нищо за тази задача."

TeodorStefanovPld точно това направи и доста ми помогна! :)

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