IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Нахождение общей части слов, Пара задач
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


1. Для задаваемой строки найти все содержащиеся в ней слова и распечатать наибольшую общую часть этих слов.
Пример:
Для строки
мирный примирить перемирие мирить
Общая часть слов - мир.
2. Найти в задаваемой строке содержащиеся в ней корни и распечатать для каждого корня однокоренные с ним слова.
Пример:
Для строки
народ мирный родник мир родина род мирить
Корни____Однокоренные слова
мир______мирный мирить
род______народ родник родина

Хелп плз. yes2.gif

Сообщение отредактировано: Patam -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


По п.1 примерно ясно. Задачка неплохая. Вот, я набросал решение..
Ищется самая большая общая подстрока. Если таковых больше одной, найдена будет первая. Как сделать нахождение всех - надо подумать..
Регистр (большие-маленькие буквы) не приводится.
Разделителем слов считаю пробел, но это легко исправить, если нужно - достаточно добавить нужные символы в множество Dividers.
;

var
s,w,r,t:string;
i,j,k,kx,n:integer;

function GetWord(s:string; var i:integer; var w:string):boolean;
var
j:integer;
begin
while (i<Length(s))and(s[i] in Dividers) do Inc(i);
j:=i;
while (j<Length(s))and not(s[j+1] in Dividers) do Inc(j);
w:=Copy(s,i,j-i+1);
GetWord:=i<=Length(s);
i:=j+1;
end;

begin
s:='смирение примирить перемирие мирный мирить';
n:=1;
GetWord(s,n,w);
while GetWord(s,n,t) do begin
kx:=0;
r:='-Nothing-in-common-';
for i:=1 to Length(w) do begin
j:=1;
while j<=Length(t) do begin
k:=0;
while (i+k<=Length(w))and(j+k<=Length(t))and(w[i+k]=t[j+k]) do Inc(k);
if k>kx then begin
r:=Copy(t,j,k);
kx:=k
end;
j:=j+k+1
end
end;
w:=r
end;
WriteLn('Root is: ',r);
ReadLn
end.

А вот с пунктом 2 не знаю, как быть. Одновременно отыскивать корни, как-то разделяя слова на группы однокоренных?.. это задача неслабая.. Или же список корней задан? Если да, тогда нет проблем.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Список корней задан
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
Если да, тогда нет проблем.

не уверена...
даны корни: лист, точ.
точка точит листочек
все три - однокоренные?


а еще есть корни с чередованием (гар-гор, зар-зор)
то есть "пригорел" и "загар" - однокоренные, а "горный" не имеет к ним отношения.
или "мир", "мирный" | "замереть", "замирать".
разделение должны быть именно таким, а не "мир", "мирный", "замирать" | "замереть"

есть еще корни из одной буквы - с ними что делать?

так что вопрос - что понимается под корнем? если просто слог, то проблем нет, а если именно четко определяемая морфема...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(мисс_граффити @ 19.04.2007 17:21) *

даны корни: лист, точ.
точка точит листочек
все три - однокоренные?
...
а еще есть корни с чередованием (гар-гор, зар-зор)
...
есть еще корни из одной буквы - с ними что делать?

мисс_граффити, ты, мне кажется, переоцениваешь обычную задачу на программирование. Это не есть реальный русский язык, это просто похоже. Кстати, в названии темы ничего про корни нету. Я использую эту терминологию для упрощения общения smile.gif.
Полагаю, что реальные данные, на которых будет проверяться решение, не будут включать перечисленных тобой случаев. Кроме того, первый случай у тебя с наложением "корней", а второй просто противоречит условию задачи smile.gif. Третий, полагаю, является вырожденным..

Добавлено через 3 мин.
По этому же поводу: не так давно я помогал решить задачу на перенос слов. Там были некоторые правила для переноса, которые неплохо вписывались в РЯ во многих случаях. Но конечно, не во всех!.. smile.gif Тем не менее задача прекрасно демонстрировала принципы программирования. Так же и эта..

Добавлено через 18 мин.
Жаль только, автор темы немногословен..
Видимо, ему достаточно оказанной помощи..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
мисс_граффити, ты, мне кажется, переоцениваешь обычную задачу на программирование. Это не есть реальный русский язык, это просто похоже. Кстати, в названии темы ничего про корни нету. Я использую эту терминологию для упрощения общения .
Полагаю, что реальные данные, на которых будет проверяться решение, не будут включать перечисленных тобой случаев. Кроме того, первый случай у тебя с наложением "корней", а второй просто противоречит условию задачи . Третий, полагаю, является вырожденным..

по пунктам smile.gif
может быть, и переоцениваю - понятно, что учесть абсолютно все тонкости языка невозможно. но, как мне кажется, стоит уточнить, что именно понимают под словом "корень".

да, скорее всего тесты будут "без заморочек". это я зря... просто полдня пытаюсь угадать, на каком тесте моя программка не работает. вот и увлеклась... *смущенный смайлик*

но все же...
где-то сказано, что наложения быть не может? хорошо.
корни: лист, очк
очки очкарик листочки

противоречие... чему противоречит-то?

вырожденный, но это не значит недопустимый...

ждем автора smile.gif


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


> по пунктам smile.gif
По пунктам - так по пунктам.. smile.gif

> стоит уточнить, что именно понимают под словом "корень".
Зачем? В оригинале речь идет об "общей части слов". Слово "корень" звучит во второй задаче, но, мне кажется, исключительно для упрощения лексики..

> полдня пытаюсь угадать, на каком тесте моя программка не работает.
У тебя есть программка? Почему бы не показать?..

> где-то сказано, что наложения быть не может?
Нет, не сказано. Беру слова обратно

> противоречие... чему противоречит-то?
Да, противоречит условию. Если есть чередование гласных (прошу прощение за употребление специального термина из другой области, не из программирования), то части слов не могут считаться общими в принятых рамках.

> вырожденный, но это не значит недопустимый...
Конечно. Просто неинтересный. И моя программа с ним прекрасно справляется.. smile.gif

> ждем автора smile.gif
С нетерпением.. smile.gif

Добавлю, что если бы речь шла о машинной обработке текста на основе правил РЯ, то такая задача потянула бы на кандидатскую.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Эээмм..
По сложности 2-я задача равна 1-ой, так что не надо учитывать чередования и прочее. unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(Lapp @ 20.04.2007 7:42) *

> стоит уточнить, что именно понимают под словом "корень".
Зачем? В оригинале речь идет об "общей части слов". Слово "корень" звучит во второй задаче, но, мне кажется, исключительно для упрощения лексики..

Вот именно. В первой - об общей части слов, во второй - о корне. "Это жжж неспроста" (с)

Цитата(Lapp @ 20.04.2007 7:42) *
> полдня пытаюсь угадать, на каком тесте моя программка не работает.
У тебя есть программка? Почему бы не показать?..

Это про шарик и нитку... я про нее писала, никто не заинтересовался.

Цитата(Lapp @ 20.04.2007 7:42) *
> противоречие... чему противоречит-то?
Да, противоречит условию. Если есть чередование гласных (прошу прощение за употребление специального термина из другой области, не из программирования), то части слов не могут считаться общими в принятых рамках.

я первую задачу вообще не трогаю... только про вторую говорю.

Цитата(Lapp @ 20.04.2007 7:42) *
Добавлю, что если бы речь шла о машинной обработке текста на основе правил РЯ, то такая задача потянула бы на кандидатскую.. smile.gif

я о том же.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 19:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name