Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

smu4k avatar smu4k 34 Точки

Homework - 09. Index of Letters - Array Exercises

  Здравейте,
може ли някаква идея да подадете за задачата от масиви "Index of Letters", тъй като нещо не ми е доизяснено в главата какво трябва да правя. Трябва да направя един отделен масив, с всичките букви  като те да бъдат елементи на него и да пусна фор цикъл който да обхожда този масив и да търси съвпадения и да казва, кой е индекса на елемента или е нещо друго.. тази задача ми изглежда лесно, така, че се извинявам :D за проявеното невежество!

Тагове:
1
Programming Fundamentals
alex1966 avatar alex1966 255 Точки

Има 2 начина да си хардкоднеш масива с азбуката или да си го напълниш с for цикъл, аз си го хардкоднах, правиш си 2 цикъла (ако въртиш 1 и за азбуката стават 3), и после една проверка: http://pastebin.com/DRA2wv9h

2
smu4k avatar smu4k 34 Точки

Мерси, умен сиии :))) Така си го представях и аз :)

1
30/05/2016 16:47:28
Simeon.R avatar Simeon.R 198 Точки

Идеята е, че в английската азбука има 26 букви и задачата иска да им дадеш номер, като започнеш от a = 0; b = 1 ... z = 25. Входът ще бъде само малки букви. 

Вариант е да обходиш всяка буква и да кажеш {буква} -> {номер}. По-трудната част е да се сетиш как да намериш номера лесно. Аз използвах ASCII таблица и свойството на char - да е едновременно символ и номер/число т.е. може да изваждаш/прибавяш числа към символи и да получиш символ/номер. Например буквата "a" е номер 97 в ASCII таблицата. Пробвай с тази подсказка :)

2
slav.petkov avatar slav.petkov 26 Точки

Здравейте, колеги,

като гледам вашите решения и на мен ми хрумна начин.

Получаваме азбуката във възходящ ред, тоест - сортирана. Има един метод за търсене, наречен Binary Search .

Накратко същността му се състои в следното:

  1. Имаме сортирана колекция от елементи и елемент, който търсим в нея.
  2. Имаме лява и дясна позиция, които ни формират затворен интервал за търсене, нека ги наречем left и right
  3. Изчисляваме индекса на средната позиция между left и right - middle = (left + right) / 2;
  4. Проверяваме елементът на индекс middle.
    - Ако е равен на елемента, който търсим, то тогава връщаме middle
    - Ако е по-малък от търсения елемент, то тогава  присвояваме на left стойност middle + 1 и изпълняваме стъпка 4
    - Ако е по-голям от търсения елемент, то тогава присвояваме на right стойност middle - 1 и изпълняваме стъпка 4.
  5. Ако не намерим този елемент, връщаме -1

Така в случая за всяка буква от инпута можем да намерим съответната ѝ позиция в масива.

Ето и примерно решение:

http://pastebin.com/akyHFCKS

Поздрави!

0
30/05/2016 18:52:04
Ddar1242 avatar Ddar1242 2 Точки

Привет,

Хареса ми решението ти. От него взех само една идея и мога да предложа крайно простичко решение на задачата :)

 

https://pastebin.com/4if0k7rj

0
Lusien.GG avatar Lusien.GG 66 Точки

Колеги, ако ползваме Linq(щот гледам, че сте ползвали във вашите решения), има много по-лесен начин.

Array.IndexOf(array,obj);

Ето моето решение, ако е от полза на някого: http://pastebin.com/rhs8nshJ

 

1
30/05/2016 20:01:16
Sim0o0na avatar Sim0o0na Trainer 567 Точки

pastebin.com/RUWCphRr <- намерила съм едно решение в интернет, което си работи, но ако някой успее да ми обясни тази част "[i] % 32 - 1" би било чудесно :D 

0
ralitsa_d avatar ralitsa_d 171 Точки

Много добро решение :)

"[i] % 32 - 1" ти дава индекса, който буквата щеше да има, ако беше част от масив с малките букви от азбуката.

Пример: 'а' - ASCII код 97 - 97 % 32 = 1 - 1 = 0. Ако имаш масив с буквите от азбуката, 'а' ще бъде точно на позиция 0.

2
Sim0o0na avatar Sim0o0na Trainer 567 Точки

Супер. Благодаря ти :)

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Тази задача доста ме обърка с излишната насока в условието. Както другите колеги показват, явно може да се реши по много начини.

Първата ми мисъл беше да си направя указания азбучен масив и да сверявам според него. Но после се хванах за главата защото се усетих, че това е излишно и неефективно. Задачата се решава с 3 реда код:

Тук са и двете ми решения, разделени с ретърн;

  http://pastebin.com/eEc0hqSm

 

Доста странна задача.

0
pecbr avatar pecbr 4 Точки

Привет, ето и моето решение.. кратичко :) 

http://pastebin.com/qfNsA5Sk

0
ctelio avatar ctelio 0 Точки

Твоето ми хареса най-много, открадвам го:))

0
nikolaybelobradov avatar nikolaybelobradov 4 Точки

https://pastebin.com/yLU0bY2A - Ето с ASCII таблицата. :)

0
Tomo_Radomirski avatar Tomo_Radomirski 6 Точки

рашението е само 6 реда (заедно с тези с по една скоба):

            String input = Console.ReadLine();
            for (int i = 0; i < input.Length; i++)
            {
                int value = input[i] - 97;   //дава стойност на съответния чар, като го коригираме да почва от нула
                Console.WriteLine("{0} -> {1}", input[i], value);
            }

простичко, нали???

 

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