Софтуерно Инженерство
Loading...
smu4k avatar smu4k 34 Точки

Homework - 09. Index of Letters - Array Exercises

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

Тагове:
1
Programming Fundamentals
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