Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм поиска ближайшей клавиши 
:(
    Опции темы
Elfebet
Дата 5.10.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



Нужно реализовать алгоритм поиска ближайшей клавиши, к примеру возмем первую букву слова computer, так как буква "с" расположена рядом с буквами "x" "s" "d" "f" "v" в результате должно вывести результат:
Код

xomputer
somputer
domputer
fomputer
vomputer

и так нужно каждую английскую букву на клавиатуре. Може есть у кого такой алгоритм? Иль хотябы подскажите как его можно реализовать правильно?


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Alexeis
Дата 5.10.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Elfebet, придется вбивать такие значения ручками в отдельный массив, для каждой клавиши smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sartorius
Дата 5.10.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Создай массив строк такого вида

Код

const char * neibors[] = {
"тут ближайшие клавиши для 'а' ",
// и тд
};


Остальное вроде понятно...
PM MAIL ICQ   Вверх
Snowy
Дата 5.10.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Просто заведи StringList и забей туда список. Благо клавиш не так много - это проще, чем прибумывать алгоритм.
PM MAIL   Вверх
Elfebet
Дата 5.10.2006, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



ну ладно, та да буду забивать список клавиш в ручную smile , а хотелось бы какой-нить универсальный алгоритм придумать. Ну всеравно спасибо за помощь.


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Sunvas
Дата 6.10.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Как один из вариантов для аниглийской клавиатуры: 
Код

function getnear(bukva:char):string;
const ch:array[1..3,1..10] of char =(('q','w','e','r','t','y','u','i','o','p')
                                        ,('a','s','d','f','g','h','j','k','l',';')
                                        ,('z','x','c','v','b','n','m',',','.','/'));
var
i,j:byte;
begin
result:='';
if bukva=ch[1,1] then result:=ch[1,2]+ch[2,1]+ch[2,2];
if bukva=ch[2,1] then result:=ch[2,2]+ch[3,1]+ch[3,2]+ch[1,1]+ch[1,2];
if bukva=ch[3,1] then result:=ch[3,2]+ch[2,1]+ch[2,2];
if bukva=ch[1,10] then result:=ch[1,9]+ch[2,10]+ch[2,9];
if bukva=ch[2,10] then result:=ch[2,9]+ch[3,10]+ch[3,9]+ch[1,10]+ch[1,9];
if bukva=ch[3,10] then result:=ch[3,9]+ch[2,10];
if result<>'' then exit;
for i:=1 to 3 do
for j:=2 to 9 do
if bukva=ch[i,j] then
begin
if i=1 then begin result:=ch[i,j-1]+ch[i,j+1]+ch[2,j-1]+ch[2,j]+ch[2,j+1]; exit; end;
if i=2 then begin result:=ch[1,j-1]+ch[1,j]+ch[1,j+1]+ch[i,j-1]+ch[i,j+1]+ch[3,j-1]+ch[3,j]+ch[3,j+1]; exit; end;
if i=3 then begin result:=ch[2,j-1]+ch[2,j]+ch[2,j+1]+ch[i,j-1]+ch[i,j+1]; exit; end;
end;
end;



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.