|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.04.2010, 22:09 | #1 |
Пользователь
Регистрация: 04.04.2010
Сообщений: 29
|
Указать минимальное количество первых букв, по которым можно различить слова из заданного списка.
В строке малыми латинскими буквами записаны слова, разделяющиеся запятыми. Первые буквы некоторых слов могут совпадать. Указать минимальное количество первых букв, по которым можно различить слова из заданного списка.
Вот мой исходник: Код:
Код:
Последний раз редактировалось Stilet; 04.06.2010 в 07:36. |
09.04.2010, 10:37 | #2 |
Форумчанин
Регистрация: 05.02.2009
Сообщений: 324
|
Код:
Тяжело быть бестолковым.....
|
09.04.2010, 13:37 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Dark_Spirit, к сожалению, реализованный Вами алгоритм неверен...
пробуйте: Код:
правильный ответ 1 (одной буквы достаточно) дальше - больше: Код:
правильный: 1 дальше: Код:
но очевидно, что для того, чтобы отличить первое слово от третьего понадобится 4-ре буквы! |
09.04.2010, 16:30 | #4 |
Пользователь
Регистрация: 04.04.2010
Сообщений: 29
|
ну помогите пожалуйста правильный составить, очень нужно, уже не знаю что делать((
|
09.04.2010, 17:32 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
bingooo, сейчас времени нет.
но подсказать могу. в паскале строка может быть длиной 255 символов максимально. поэтому, если допустить, что введены все слова из ОДНОЙ буквы, то максимум может быть 128 слов. поэтому заводите массив Slova : array[1..128] of string; разбирайте строку на слова, слова записывайте в массив. ну а потом, я бы лично отсортировал массив (чтобы не перебирать все элементы каждый раз), присвоил переменной NeedLetterCount := 1; (минимально одна буква, ибо пустые строчки - это не слова) цикл по i от 1 до (КоличествоСлов - 1) в цикле: в отсортированном массив сравнивал, пока подстрока длиной NeedLetterCount i-го слова совпадает с подстрокой длиной NeedLetterCount i+1-го слова, то увеличивал бы NeedLetterCount. добавить проверку на то, что слово закончилось. всё. задача решена! кстати, если в исходной строке два одинаковых слова, то данная задача вообще не имеет решения. |
09.04.2010, 20:39 | #6 | |
Форумчанин
Регистрация: 05.02.2009
Сообщений: 324
|
Serge_Bliznykov , спасибо за критику, но здаётся мне что Вы немного не внимательно прочли задание.
Цитата:
Тяжело быть бестолковым.....
|
|
09.04.2010, 21:04 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Dark_Spirit, всё может быть..
но, я процитированный Вами текст понимаю так: нужно найти сколько букв из любого слова нужно взять, чтобы ОДНОЗНАЧНО определить, какое слово перед нами... Вот, смотрите, в задании даже сказано, что "Первые буквы некоторых слов могут совпадать". Вот и нужно найти МИНИМАЛЬНОЕ количество первых букв, по которыми слова можно РАЗЛИЧИТЬ! __________________________________ Цитата:
слова bugaga и lollollol сколькими буквами отличаются?! а слова kusok kubok ?! |
|
04.06.2010, 01:21 | #8 |
Новичок
Джуниор
Регистрация: 04.06.2010
Сообщений: 1
|
Не удержался, вот моё видение этой проблемы...
Uses crt; Var S,Sr,Sj: String; r,i: Integer; BEGIN clrscr; Write('Введите строку: '); ReadLn(S); r:=1; Sr:=''; i:=1; Sj:=''; While (i<=Length(S))and(r<Length(S)) do begin if (S[i]=' ') then Sj:='' else Sj:=Sj+S[i]; if (Length(Sj)=r) then begin if (pos(Sj,Sr)>0)and( ((pos(Sj,Sr)-1) mod Length(Sj))=0) then begin r:=r+1; Sr:=''; i:=0; Sj:=''; end else Sr:=Sr+Sj; end; i:=i+1; end; WriteLn('Минимальное количество символов для различения слов: ',r); Repeat Until KeyPressed; END. Последний раз редактировалось Janch; 04.06.2010 в 01:25. Причина: Поспешил, лишнего написал |
04.06.2010, 06:59 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Janch, потестировал немножко.
Вроде бы всё работает так, как надо (с моей точки зрения!) Но есть один недостаток! В задании сказано: Цитата:
|
|
04.06.2010, 07:42 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Хы... Ну а вот мое видение решения этой проблемы
Код:
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
все слова с нечетным количеством букв подходят для "ёлочной" рекурсии. Все буквы слова расположены в форм | no_to | Помощь студентам | 0 | 04.01.2010 16:06 |
Организовать поиск всех вхождений заданного слова в загруженном тексте | s2dentishe | Помощь студентам | 0 | 21.11.2009 18:53 |
Удвоить каждый из первых пяти цифровых символов и удалить 5 последних латинских букв | gred | Помощь студентам | 5 | 16.05.2008 23:20 |
Си - Написать функцию, проверяющую наличие в строке заданного слова | Cvetok | Помощь студентам | 1 | 14.05.2008 05:44 |