Loading...
AlexanderPetkov27 avatar AlexanderPetkov27 1 Точки

The V-Logger , Sets and Dictionaries Advanced

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

https://pastebin.com/32aqZnKe

Тагове:
0
C# Advanced
GeorgiPaunov avatar GeorgiPaunov 265 Точки

Ето моето решение, виж дали ще ти свърши работа, за да си намериш грешките:

https://pastebin.com/wYCQA5fL

0
Dani77 avatar Dani77 15 Точки

Браво! Страхотно решение!

0
bgdimgeo avatar bgdimgeo 4 Точки

Много яко решение ! 

0
prohause avatar prohause 356 Точки

Това ли ти е целия код? Ако е така липсва подробна разпечатка за последователите на Vlogera с най голям рейтинг.

0
GeorgiPaunov avatar GeorgiPaunov 265 Точки

Да, да, той казва, че е пробвал, но не му се е получило. Аз като гледам не е направил и логиката за "joined", а тази за "followed" е усложнена и грешна. @ AlexanderPetkov27 затова ти дадох моето решение, да пробваш да си направиш твоето (а и всички казват, че трябва да се чете и дебъгва чужд код). Ако все пак има нещо неясно или не ти се получи, пиши пак и ще мъчим да го оправим.

0
30/11/2018 09:19:48
SvilenPavlov avatar SvilenPavlov 11 Точки

Здравей! 
От твоето решение си взех идеята за каква да ми е конструкцията на данните 
new Dictionary<string, Dictionary<string, SortedSet<string>>>();
и от там натам се оправих. 
Както каза GeorgiPaunov, логиката ти за първата проверка, дали човека се включва в сайта или става follower на друг член ти я няма.Структурата ти на проверки е объркана.
1. Приоритета на проверяване трябва да е: 
     1.Коя команда ми подават - joined или following

     2. Ако е joined - има ли го тоя човек или го няма в базата данни - ако го няма го вкарваме с изициализирани подречници followers и following
    3. Ако е followed - има ли ги и двамата и различни ли са username-овете има, за да не се последва някой сам себе си, което може да го направиш в един ред така:
if (dict.ContainsKey(vlogger) && dict.ContainsKey(member) && vlogger!=member)

А ти правиш една първоначална проверка:
if (line[0] == line[2])
line = Console.ReadLine().Split()           

което не работи, най-малкото защото взимаш console.readline() и накрая на while цикъла пак взмаш нов ред, пропускайки един цял вход.

2. Поприницп, а и особено в такива задачи с вложени структури данни е в ПЪТИ по-лесно да си наименоваш променливите,с  които ще работиш. Примерно тоя line[0] да се казва vlogger, а втория да се казва member. Така по-лесно се вижда грешката ти при записване на нов човек, тук 
dict[line[0]]["following"].Add(line[2]);

Реално ти записваш при following, а трябва при followers.

3. Накрая при принтирането си направил по-трудното да ги сортираш, но не си дописал една иф проверка дали тоя counter==1, и във вложения for цикъл да си напишеш от коя колекция ги търсиш последователите на първенеца, а именно:
kvp.Value["followers"]
 

0
BlagovestSotirov avatar BlagovestSotirov 1 Точки

Ето едно позакъсняло решение. :)

https://pastebin.com/8Z1G0Y4D

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