Loading...
salih1f1 avatar salih1f1 188 Точки

[Exam Problems] C# Basics - Five Special Letters

Здравейте. Още вчера зациклих на тази задача. В задачата се изисква да не се смятат повторно повтарящите се букви а аз не се досещам как да ги изключа от сумата. Останалата част от задачата я разбрах и имам идеи. Ще се радвам ако някой ми помогне. Това е кода, който се състои засега само от 2 масива и 5 вложени цикъла.

0
Programming Basics
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз я направих по този начин:

FiveSpecialLetters

На мен листите са ми доста удобни при решаване на 4-тите задачи от изпитите.

1
salih1f1 avatar salih1f1 188 Точки

Много ми помогна с твоя начин. Не се бях сетил. Написах я (случайно или не :) ) почти като твойта. Да но не тръгва. Мъчих се с дебъгера но неможах да разбера къде ми е грешката. Ще съм ти благодарен ако и хвърлиш едно око. http://pastebin.com/hLG1bN0f

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

На първо време като гледам lettersList.Clear() си го изнесъл с 1 цикъл по-навън. Сложи го да е в тялото на следващия цикъл. Освен това защо 5-те цикъла са ти в ред edcba, а след това добавяш елементите в ред abcde? Може би и така ще работи, но е по-лесно четимо и логично да са с еднакъв ред. 

И друго открих - на ред 51 letters[a]  а-то си го въвел на кирилица. 

Edit: Явно не работи когато не съвпада реда на буквите в циклите, реда при добавянето в List-a и реда на добавянето им в input. Направи навсякъде поредността да е abcde, плюс оправи другите забележки и ще ти работи.

1
a.angelov avatar a.angelov 1316 Точки

Здравей,

ето моето решение на задачата: http://pastebin.com/UHsUfpX8

Избягвам повторението на буквите по следния начин: ползвам лист в който слагам всяка несъществуваща в него буква. Т.е. листа в началото е празен, обхождам всяка буква от съответната комбинация букви и ако тази буква я няма в листа я добавям в него. По този начин получавам само неповтарящите се букви в листа. Като изчисля тежеста зачиствам листа и при следващата итерация го пълня отново с букви от следващата комбинация. Дано да си ме разбрал, че малко не ме бива в обясненията... :)

1
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз слагам всички букви в List и след това използвам Distinct(), който премахва всички повтарящи се елементи.

list = list.Distinct().ToList();  

3
a.angelov avatar a.angelov 1316 Точки

Да, аз разгледах решението ти, доста по-леко става така! Linq определено има доста полезни методи.

2
Valleri avatar Valleri 304 Точки

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

Може напрмер да направиш следното - в ядрото на циклите можеш да append символите към СтрингБилдера, но първо провери с indexOf == -1 дали вече не е там. Ако го няма го добави, след това вече смяташ теглата.

1
Cecobent avatar Cecobent 2 Точки

Според мен най доброто решение до момента е моето, може да помислите над него.
https://pastebin.com/MnjXUnVd
Задавайте въпроси, ако имате нужда!

0
15/04/2017 02:22:27
Samuil_Dechev avatar Samuil_Dechev 35 Точки

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

 

https://goo.gl/EcxUSS

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