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

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

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

> Перенос слова, перенести слова, используя 3 правила
Gold_Fish
сообщение 5.12.2006 20:54
Сообщение #1


Новичок
*

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

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


Помогите, пожалуйста, очень прошу, хотя бы частично:
Перенос слова. Перенос русского слова с одной строки на другую с большей вероятностью выполняется правильно, если пользоваться следующими правилами:
1)две идущие подряд гласные можно разделить, если перед первой из них стоит согласная, а за второй идет хотя бы одна буква (буква й при этом рассматривается вместе с предшествующей ей гласной как единое целое);
2) две идущие подряд согласные можно разделить, если первой из них стоит гласная, а в той части слова, которая идет за второй согласной, имеется хотя бы одна гласная (буквы ь, ъ вместе с предшествующей согласной рассматриваются как единое целое);
3) если не удается применить первые два правила, то слово разбивают так, чтобы первая часть содержала более чем одну букву и оканчивалась на гласную, а вторая содержала хотя бы одну гласную.
Дан текст, состоящий из нескольких строк. Преобразовать текст таким образом, чтобы длина строк не превышала заданного значения, используя при этом перенос слов. blink.gif

Как найти ближайший к концу строки пробел, если при заданном значении слово "как бы разбивается"? Как осуществить на Паскале приведенный выше перенос???

Сообщение отредактировано: Gold_Fish - 6.12.2006 14:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Gold_Fish
сообщение 10.12.2006 10:22
Сообщение #2


Новичок
*

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

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


smile.gif Более или менее все понятно, а вот куда впихнуть буквы "й, ь, ъ" для них просто массив создать в начале, да? rolleyes.gif
P. S. Дальше не могу продвинуться, никак не составлю условие для переноса wacko.gif
Програмка прикольно работает, так интересно переносит твои, как ты выразился
Цитата
вот эти мои заумные мысли

lol.gif

Сообщение отредактировано: Gold_Fish - 10.12.2006 10:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 10.12.2006 17:31
Сообщение #3


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

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

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


Вот, есть первый ощутимый результат smile.gif.
Я реализовал первое правило. Получается не так просто, чтобы объяснить в двух словах. Давай, лучше ты посмотришь и станешь задавать вопросы - по сделанному, а не "как дальше".. Я немного подозреваю, что ты смотришь на сделанное, как на пройденный этап, к которому нет смысла возвроащаться.. А это неправильно, так как именно в этом и состоит твой прогресс. Если можешь, развей мои подозрения smile.gif.

В принципе, реализация остальных правил может быть проведена по образу и подобию первого. Так что если ты действительно разберешься, ты сможешь это сделать. Извини за отстутствие комментариев, могу добавить позже..

> Более или менее все понятно, а вот куда впихнуть буквы "й, ь, ъ"
> для них просто массив создать в начале, да?
Я вообще несколько переделал организацию ввода алфавита. Ну, увидишь, как. Это для простоты, компактности и лучшей читаемости (да и писаемости тоже smile.gif) кода, особенно когда несколько кодировок.

> P. S. Дальше не могу продвинуться, никак не составлю условие для переноса wacko.gif
Вот, я его составил smile.gif. Enjoy! smile.gif

Последние замечания:
- вывод пока идет только на экран;
- длина строки задается Lx, поварьируй ее..
Ну пока и все.
{ Hyphenation
Version 0.4
- rule #1
- getting the last w in a line
- reading the file
for Gold_Fish by Lapp }

const
Lx=37;
VowDOS='АаЕеЁёИиОоУуЫыЭэЮюЯя';
ConDOS='БбВвГгДдЖжЗзКкЛлМмНнПпРрСсТтФфХхЦцЧч';
IShDOS='Йй';
SHzDOS='ЪъЬь';

var
fIn:file of char;
fOu:text;
fName,s,t,w,Map:string;
c,d:char;
i:integer;
Vow,Con,ISh,SHz,Let:set of char;
Gap,Start:boolean;

begin
Write('Введите имя файла для форматирования: ');
ReadLn(fName);
{fName:='d.txt';}
Assign(fIn,fName);
ReSet(fIn);
Assign(fOu,'tst-ou-w.txt');
ReWrite(fOu);
Vow:=[];
Con:=[];
Ish:=[];
for i:=1 to Length(VowDOS) do Include(Vow,VowDOS[i]);
for i:=1 to Length(ConDOS) do Include(Con,ConDOS[i]);
for i:=1 to Length(IShDOS) do Include(ISh,IShDOS[i]);
for i:=1 to Length(SHzDOS) do Include(SHz,SHzDOS[i]);
Let:=Vow+Con+ISh+SHz;
s:='';
repeat
d:=#0;
while (Length(s)<Lx)and((d<>#$D)or(c<>#$A))and not EoF(fIn) do begin
if s=' ' then s:='';
d:=c;
Read(fIn,c);
if not (c in [#$D,#$A]) then s:=s+c;
end;
t:='';
if Length(s)=Lx then repeat
d:=c;
Read(fIn,c);
if not (c in [' ',#$D,#$A]) then t:=t+c;
until (c=' ')or((d=#$D)and(c=#$A))or(EoF(fIn));
if t<>'' then while not (s[Length(s)]=' ')or(Length(s)=0) do begin
Insert(s[Length(s)],t,1);
Delete(s,Length(s),1)
end;

{Rule #1}
if Length(t)>=4 then begin
for i:=1 to Length(t) do Map[i]:=Chr(i);
w:=t;
for i:=Length(t) downto 2 do {убираем Й после гласных в слове}
if (w[i] in ISh)and(w[i+1] in Vow) then begin
Delete(w,i,1);
Delete(Map,i,1)
end;
for i:=Length(w)-2 downto 2 do
if (w[i+1] in Vow)and(w[i] in Vow)and(w[i+2] in Let)and(w[i-1] in Con) then
if Length(s)+Ord(Map[i])<Lx then begin
s:=s+Copy(t,1,Ord(Map[i]))+'-';
Delete(t,1,Ord(Map[i]))
end;
end;
WriteLn(s);
s:=t;
if c=' ' then s:=s+' ';

{WriteLn(fOu,s)}
until EoF(fIn);
Close(fIn);
{ Close(fOu); }
;ReadLn
end.


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

Сообщений в этой теме
Gold_Fish   Перенос слова   5.12.2006 20:54
lapp   Дан текст, состоящий из нескольких строк. Преобра...   6.12.2006 7:13
Gold_Fish   :blink: Ой, неужели кто-то мне помог!!...   6.12.2006 14:48
lapp   Помогите доделать, пожалуйста. :unsure: Помочь -...   6.12.2006 15:12
Gold_Fish   Я знаю, что Lapp, я даже сначала так написала, а п...   6.12.2006 17:07
Lapp   Ну так вот, ввожу я уже свой текст: Хорошо, что...   7.12.2006 7:30
Gold_Fish   Спасибки, Lapp :) Почти все дошло, кроме: почему п...   7.12.2006 21:49
Lapp   Gold_Fish, извини, я неправильно (не в той кодиров...   8.12.2006 4:28
Pola   Спасибки, Lapp :) Почти все дошло, кроме: почему ...   8.12.2006 11:16
Gold_Fish   Из браузера я не копирую, а сама перепечатываю в П...   8.12.2006 15:45
Lapp   Из браузера я не копирую, а сама перепечатываю в ...   8.12.2006 15:55
Gold_Fish   Я установила новый, т к в старом Windows-1251.reg ...   8.12.2006 16:18
Gold_Fish   Страничка freepascal.org не хочет открываться :bl...   8.12.2006 16:34
Lapp   Я установила новый, т к в старом Windows-1251.reg...   9.12.2006 5:18
Gold_Fish   А ты правда готова качать 28 мег?.. Какой у тя к...   9.12.2006 12:22
Gold_Fish   Премногоуважаемый Lapp! :))) Я создала обычный...   9.12.2006 12:52
Lapp   Премногоуважаемый Lapp! :))) Я создала обычны...   9.12.2006 13:20
Gold_Fish   Здраствуйте, друг мой Lapp! :))) (Снова Вас тр...   9.12.2006 13:50
Lapp   Вот вариант, читающий файл и выдающий отдельно стр...   9.12.2006 15:18
Gold_Fish   :) Более или менее все понятно, а вот куда впихнут...   10.12.2006 10:22
Lapp   Вот, есть первый ощутимый результат :). Я реализов...   10.12.2006 17:31
Gold_Fish   Сейчас разберусь в проге и попробую развеять :)))...   10.12.2006 19:41
Gold_Fish   Что-то не очень понимаю вот это место: И почему-т...   10.12.2006 20:50
Lapp   > И почему-то перед ошибка №121 :unsure: TP...   11.12.2006 1:52
Gold_Fish   Барахтаюсь :lol: В FPC я тоже пробовала эту прог...   11.12.2006 8:37
Lapp   > В FPC я тоже пробовала эту прогу, да он пропу...   11.12.2006 11:06
Gold_Fish   В общем-то ничего и не выдает :))) ( может быть я ...   11.12.2006 13:49
Lapp   > В общем-то ничего и не выдает :))) > ... ...   11.12.2006 14:01
Gold_Fish   Теперь вообще FPC другую штуку пишет (типа ошибки,...   11.12.2006 14:04
Lapp   Ну я вводила d.txt точно :))) Против сверхъестес...   11.12.2006 14:13
Gold_Fish   Против сверхъестественных явлений я пас.. Ошибка...   11.12.2006 14:15
Lapp   Теперь уже TP работает :) , а FPC прежнюю штучку...   11.12.2006 14:26
Gold_Fish   Что ТР работает - это хорошо, но хотелось бы узна...   11.12.2006 14:37
Lapp   > Штучку прежнюю, где > exited with > exi...   11.12.2006 14:55
Gold_Fish   Заметил еще одну квазиошибку в том своем тексте.....   11.12.2006 15:01
Lapp   Что сделать? :unsure: Заключить в фигурные ско...   11.12.2006 15:05
Gold_Fish   Заключить в фигурные скобки :))))))))) Ну не над...   11.12.2006 15:10
Алена   sTRing попробуй набрать, вместо того, что сейчас...   11.12.2006 14:06
Lapp   sTRing попробуй набрать, вместо того, что сейчас ...   11.12.2006 14:10
Gold_Fish   УРА!!! Заработало :lol: Там просто в...   11.12.2006 14:10
Lapp   2) две идущие подряд согласные можно разделить, е...   11.12.2006 15:53
Michael_Rybak   Наверное "две идущие подряд согласные можно р...   11.12.2006 15:56
Gold_Fish   Вот это как понимать?.. :blink: Да, не знаю, так...   11.12.2006 15:57
Lapp   Пишу пояснения к реализации Правила №1 (см. пост №...   12.12.2006 16:08
Gold_Fish   Ура!!! Заработало, у меня перенеслось ...   12.12.2006 18:04
Gold_Fish   Подскажите пожалуйста, как задать момент, когда вт...   12.12.2006 19:59
Lapp   > Ура!!! Заработало, Правда приятн...   13.12.2006 15:36
Gold_Fish   Спасибки :give_rose: Еще как пыталась :) , я и...   13.12.2006 17:22
Lapp   Вот тут: Rule №3: if ((w[i] in Vow) and ((w[i-1] i...   14.12.2006 4:29
Gold_Fish   А ты все же потрудись разобраться! Я не по...   15.12.2006 22:27
Lapp   Я не понимаю как переделать, подскажите пожалуйст...   16.12.2006 2:52
Gold_Fish   Я разбиралась, а все равно не поняла, а вторник - ...   16.12.2006 16:33
Lapp   Gold_Fish, мне искренне жаль, что это оказалось не...   19.12.2006 7:41
Gold_Fish   Да все уже, сдала я :))) Вторую делаю к зачету уже...   19.12.2006 19:50
Lapp   Да все уже, сдала я Gold_Fish, пожалуйста, уважа...   20.12.2006 3:28


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

 



- Текстовая версия 18.07.2025 9:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"