Loading...
peter1998 avatar peter1998 5 Точки

Programming Fundamentals Exam - 09 July 2017 Part 2

https://pastebin.com/m3h13WmF

,колеги ! как мога да си добавя елементи в речника с ЕДНАКЪВ Key и value-to е речник и пак да имат еднакъв Key : ето тези примери например :  Dictionary<string, Dictionary<string,int>> dict = new Dictionary<string, Dictionary<string,int>>();

# Meowth //key

Physical <-> 100  //key<->value

Physical <-> 50 // key <-> value 

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

Изпитната задача е номер 4 от този изпит https://judge.softuni.bg/Contests/Practice/Index/692#1

Тагове:
0
C# OOP Advanced
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

първо тая задача е от programing fundamentals... тука е ооп адвансед :Д както и да е това което искаш да направиш е невъзможно.. няма как да имаш еднакви ключове нали това е идеята на речника да ти пази информацията като key - value.. ако имаш еднакви ключове как ще знаеш къде какво да сложиш и къде какво да извадиш ? това което можеш да направиш е 

dictionary<string,Dictionary<string,List<int>>>

и тогава вече ще имаш  Меowth<physical ,List<int>(100,50)>.. и вече ще можеш да си складираш вадиш и тн. И речници се ползват доста рядко като почнеш да блъскаш класове полета и тн малко им се губи смисъла. И да на тая задача има доста подходи. Както с всички други... А и май не е лошо да прочетеш малко за hashsets и как работят като толкова ти харесват речници.

-1
k.sevov avatar k.sevov 1077 Точки

Речниците работят само с уникални ключове, т.е. на един ключ се очаква да отговаря само една стойност. Ако искаш да имаш много стойности към един ключ трябва да си ги държиш в някаква колекция (така спазваме условията на речника, ключът ще има една стойност - самата колекция). Колекцията може да е лист както е предложил колегата, друг речник (за да си дадеш имена на стойностите и да ги вземаш по ключ примерно), обект и т.н. 

Ако искаш да работиш с нещо подобно на нормалния речник като структура, можеш да си направиш List<KeyValuePair<x, y>>. Това е удобно за тази задача, но по принцип е лоша идея, тъй като се губят предимствата на бързодействието на речника спрямо листа (бързо намиране по ключ и бързо изтриване). Ето ти едно примерно решение с този подход. За пълнота да добавя, че е възможно да се напише речник, който да работи с повтарящи се ключове и има готови такива структури във външни библотеки, но ще се запознаеш в подробности с тези неща ако запишеш курса Структури от данни. 

0
12/04/2018 18:28:32
peter1998 avatar peter1998 5 Точки

Колега за пръв път виждам този тип Лист защо е по различен от нормалния 
new List<KeyValuePair<string, int>>()) 
ако имаше и видео уроче с тези класове полета и хашсетове <3 благодаря и супер много ми харесва List-а къде мога да си извадя малко повече информацийка или клипчета с този лист 

0
13/04/2018 11:53:41
k.sevov avatar k.sevov 1077 Точки

Това също си е нормален лист, но го пълним с обекти тип KeyValuePair, с които работят и речниците (като дадеш foreach на речника получаваш такива обекти, на които им даваш .Key и .Value съответно за да си вземеш стойностите). В случая единствената причина да ползваме kvp-та е да си направим структурата да прилича на речник по начин на работа при печатането накрая. Вместо това може да е някакъв Tuple, създаден от нас обект или направо да си залепим стойностите в един стринг във формат готов за печатане (и ако ни трябва някоя стойност за сортиране примерно да си я вземаме със substring или split). Това със стринговете си е доста полезен похват, може да пробваш така ако имаш желание.

0
13/04/2018 12:32:39
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

листовете и масивите се учат в курса.един масив може да държи всякакви стойности каквито му кажеш или обекти. Kvp e  служебен обект които просто държи 2 неща. Тои и реално речника е множество kvp. Сега колкото и записи и уроци да гледаш, тънката част при програмирането е не да знаеш всички класове всичките примитивни променливи и тн,а така да използваш това което знаеш за да получиш резултата които искаш. Примерно kvp tuple както е казал колегата ако примерно слушаш лекции на Кенов или други не ги харесват много,Но в нета ще намериш и хора които ги харесват.

По нататък в с# advanced като започнете да работите с обекти list<Person> или List<Car> е нещо съвсем нормално. Пак ли ще кажеш че това не е лист които знаеш? и ти трябва информация да прочетеш?

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