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

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

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

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Перенос слова, перенести слова, используя 3 правила
сообщение
Сообщение #1


Новичок
*

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

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


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

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

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


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

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

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


Цитата(Gold_Fish @ 5.12.2006 21:54) *

Дан текст, состоящий из нескольких строк. Преобразовать текст таким образом, чтобы длина строк не превышала заданного значения, используя при этом перенос слов. blink.gif

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

Первый и главный вопрос к тебе: знаки препинания не нужно учитывать? Это ведь тоже непростой вопрос. Например, обычно их нельзя переносить (отрывать от слова). А тире, скажем, отделяется от слова пробелом, но переносить его при этом тоже не стОит. Есть многосимвольные знаки препинания (... , ?.. , !.. , ..). И нужно ли сохранять пробелы в конце строки (впрочем, это, наверное, нет). Еще, есть такой особый знак препинания, как "красная строка", например.. Короче, ответь.

Второй вопрос.. Не совсем понятен пункт 1. Правильно я понимаю, что в соответствии с ним слова "параноик", "наитие", "кондуит" нельзя перенести так: парано-ик, на-итие, конду-ит?

Если пока забыть про знаки препинания и остальные проблемы, то начать можно примерно так..
От начала текста отмеряем максимальную длину строки (Lx) и смотрим, попадает ли разрыв в тело слова. Признаком этого можно считать наличие букв (а не пробелов, знаков препинания..) по обе стороны от разрыва. Вот я тут набросал примерный текст программки, которая берет в отдельную строку s слово, попавшее на разрыв. Дальше можно с ним развлекаться и смотреть, как его можно делить. Моя программа делает это пока только по урезанному первому правилу для, так сказать, демонстрации smile.gif. Если прояснятся вышеупомянутые вопросы, могу поучаствовать и в дальнейшем развитии проги. Задачка интересная smile.gif. Интересно, где такие задают? smile.gif
{ Hyphenation }
{ for Gold_Fish by Lapp }

const
Txt:array[1..153]of char= 'Chelovecheskaq dusha stolj zhe interesna, '+
'mnogoobrazna i maloizuchena, kak i Vselennaq, poskoljku '+
'vmeshaet i otrazhaet poslednww, qvlqetsq ee gologrammoi';

const
Lx=50;
Vowels:set of char=['a','A','e','E','i','I','o','O','q','Q','u','U','y','Y'];
Letters:set of char=['A'..'Z','a'..'z'];

var
l,p,t,t1:integer;
s:string;
c:char;

begin
t:=0; {текущая позиция}
t1:=t+Lx; {следующий разрыв}
if (Txt[t1-1] in Letters)and(Txt[t1] in Letters) then begin
p:=t1;
while Txt[p-1] in Letters do Dec(p);
l:=t1-p;
s:='';
while Txt[p] in Letters do begin
s:=s+Txt[p];
Inc(p)
end
end;
if Length(s)>0 then begin
WriteLn('Slovo "',s,'" obrybaetsq. Vlezaet ne bolee ',l,' bukv');
if l<2 then WriteLn('Perenesti neljsq')
else begin
c:=s[l+1];
repeat
if (c in Vowels)and(s[l] in Vowels) then begin
Insert('-',s,l+1);
WriteLn('Perenos: "',s,'"');
break
end;
c:=s[l];
Dec(l)
until l=0;
if l=0 then WriteLn('Perenesti neljsq')
end
end
else WriteLn('Razryv ne na slove');
ReadLn
end.

Забыл сказать: я использую пока английские буквы, иначе говоря латиницу, во избежание сложностей. Потом можно будет перейти на настоящий русский. Соответствие букв в основном понятно, надеюсь. Кроме обычных еще есть Q как Я и W как Ю.
Текст пока в массиве, потом, видимо, нужно будет читать из файла..


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


Новичок
*

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

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


blink.gif Ой, неужели кто-то мне помог!!! Спасибо Iapp огромное, преогромное!!! give_rose.gif
Насчет пункта №1: извиняюсь, не так немножко, там буква й при этом рассматривается вместе с предшествующей ей гласной как единое целое (я полагаю, что если перед й стоит гласная, то они рассматриваются как единое целое).
А вот, про знаки препинания не знаю, так как в задаче ничего не сказано.
Задают такие задачи в Ивановском Государственном Энергетическом Университете на 1 курсе, факультета ИВТФ.
Помогите доделать, пожалуйста. unsure.gif

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


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

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

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


Цитата(Gold_Fish @ 6.12.2006 15:48) *

Помогите доделать, пожалуйста. unsure.gif

Помочь - не проблема smile.gif.
Но ты сначала разберись в том, что есть, и покажи, что разобралась.
Твой ход.

Значит, в Энергетическом.. smile.gif Хм, забавно. Я все же думал, что что-то более близкое к гуманитарной области. Но все равно приятно такое видеть - особенно на фоне повального "удаффа" и не только. А уж про перенос стали забывать даже в книгопечатаньи..

и - Lapp я.. Лопарь. smile.gif


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


Новичок
*

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

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


Я знаю, что Lapp, я даже сначала так написала, а потом посмотрела внимательнее на ник, ведь там же Iapp написано, вот и исправила smile.gif
Ну так вот, ввожу я уже свой текст:
Program May;
const
Vowels:set of char=['a','A','e','E','i','I','o','O','q','Q','u','U','y','Y'];
Letters:set of char=['A'..'Z','a'..'z'];
var
l,p,t,tl,Lx:integer;
s:string;
c:char;
Txt:array[0..100] of char;
begin
writeLn('vvedite text');
readln(Txt);
writeLn('vvedite chislo');
readLn(Lx);
begin
t:=0; {tekuchaq pozisiq}
tl:=t+Lx; {sleduwchi razriv}
if (Txt[tl-1] in Letters)and(Txt[tl] in Letters) then
begin
p:=tl;
while Txt[p-1] in Letters do Dec(p);
l:=tl-p;
s:='';
while Txt[p] in Letters do begin
s:=s+Txt[p];
Inc(p)
end
end;
if Length(s)>0 then begin
WriteLn('Slovo ',s,' obrybaetsq. Vlezaet ne bolee ',l,' bukv');
if l<2 then Writeln('Perenesti neljsq')
else begin
c:=s[l+1];
repeat
if (c in Vowels)and(s[l] in Vowels) then begin
Insert('-',s,l+1);
WriteLn('Perenos: '',s,''');
break
end;
c:=s[l];
Dec(l)
until l=0;
if l=0 then WriteLn('Perenesti neljscq')
end
end
else WriteLn('Razryv ne na slove');
ReadLn;
end;
end.


А как же мне сделать, чтобы остальные слова и часть перенесенного слова печатались на новой строке??? nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


Цитата(Gold_Fish @ 6.12.2006 18:07) *

Ну так вот, ввожу я уже свой текст:

Хорошо, что вводишь. Но только..
1. Почему в программе исчезло все форматирование? Я имею в виду сдвиги. У меня все было аккуратно. Учти, это очень важно. И еще учти, что я не хочу тратить вреям на восстановление форматирования вручную каждый раз! Будь добра, сохраняй его, а также сама старайся писать правильно..
2. Когда постишь прогу, используй теги Паскаля (выбери в выпадающем меню со словом CODE над окном ввода). Опять же, я постоянно исправлять не намерен (это я уже как админ тебе говорю).
Цитата(Gold_Fish @ 6.12.2006 18:07) *

А как же мне сделать, чтобы остальные слова и часть перенесенного слова печатались на новой строке??? nea.gif

Не спеши.. Все будет..
Как я уже говорил, та программа была нацелена не на решение поставленной задачи, а на демонстрацию методов. Теперь, когда все более-менее прояснилось, можно начать систематически решать проблему.. Для этого начнем все заново. Ты готова? Шаг за шагом разберемся во всем и подойдем к решению. По пути задавай вопросы, если что непонятно. Если сразу все ясно - пиши свой вариант smile.gif
Согласна с таким подходом? Пока считаю, что Да, согласна (но ты все же ответь), и начинаю продолжать smile.gif.

Сначала разберемся с вводом текста. Думаю, ввод надо осуществлять из файла. Причем, поскольку в нормальном обычном тексте длина строки может быть больше 255 символов (макимальный размер переменной String) - в последнее время принято, что строка равна абзацу -, то использование строк во входном потоке отпадает. Я написал кусок кода, который пока читает входной файл и просто режет его на куски длины Lx (сейчас задано 30). При этом оригинальные концы строк (то есть концы абзацев) сохраняются. Посмотри, как он устроен, разберись и тогда пойдем дальше. Обрати внимание, как обрабатываются концы строк (абзацев) при чтении (в файле строки разделяются последовательностью двух символов: #13,#10).

Дальше, теперь переходим на настоящий русский - никаких латиниц. Это влечет за собой несколько трудностей.
Русских кодировок не одна, а несколько. Как минимум три: windows-1251, DOS-866 и KOI8-R (есть и еще). В настоящее время самой распространенной является первая, сокращенно Win. Но TP и BP используют кодировку DOS. Поскольку для нас существенно расположение гласных, а оно определенно зависит от кодировки, то игнорировать этот вопрос нельзя. Выходов как минимум три:
- выбрать одну кодировку и ей ограничиться;
- при вводе файла запрашивать от пользователя ввод кодировки;
- распознавать кодировку автоматически.
Мне больше всего нравится 3-й способ, но он не 100% надежен, кроме того может быть труден для начинающего (сорри, -щей..), так что предлагаю выбрать второй вариант. В моем куске кода есть наборы гласных для Win и DOS кодировок, хотя я не уверен, что тебе удастся из правильно скопировать.
Для копирования файлов и текстов очень рекомендую использовать программку Far. Знакома ты с ней? Ответь, пожалуйста.

Ладно, пока хватит. Вот код. Постарайся, чтоб при копировании русские буквы не превратились в белиберду. Обязательно скажи, удалось ли тебе это.
{ Hyphenation
Version 0.2
for Gold_Fish by Lapp }

const
Lx=30;
Vowels_Win:set of char=
['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
Vowels_DOS:set of char=
['_',' ',':','_','р','с','_','Ё','_','R','"','г','>','л','_','н','_','о','_','п'];


var
fIn:file of char;
fOu:text;
fName,s:string;
c,d:char;
i,l,ws:integer;
Vow:set of char;
Gap,Start:boolean;

begin
Write(''ў_¤Ёв_ Ё┐п д c< ¤<п дRа┐ вЁаRў -Ёп: ');
ReadLn(fName);
Assign(fIn,fName);
ReSet(fIn);
Assign(fOu,'tst-ou-w.txt');
ReWrite(fOu);
repeat
l:=0;
s:='';
d:=#0;
repeat
d:=c;
Read(fIn,c);
if not (c in [#$0D,#$0A]) then s:=s+c;
Inc(l)
until (l=Lx)or((d=#$D)and(c=#$A))or(EoF(fIn));
WriteLn(fOu,s)
until EoF(fIn);
Close(fIn);
Close(fOu);
;ReadLn
end.

Цитата(Gold_Fish @ 6.12.2006 18:07) *

посмотрела внимательнее на ник, ведь там же Iapp написано, вот и исправила smile.gif

нет, там было маленькое L (l). Сейчас я исправил на большое.. smile.gif


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


Новичок
*

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

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


Спасибки, Lapp smile.gif
Почти все дошло, кроме:
почему пишет что begin не хватает в:
Цитата
Vowels_Win:set of char=
['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
Vowels_DOS:set of char=
['_',' ',':','_','р','с','_','Ё','_','R','"','г','>','л','_','н','_','о','_','п'];

и почему то на русский алфавит мой Паскаль не переходит, хотя у него и справка русская. Да, и если поставить Begin, то выдает потом ошибку №3.
Еще не оч поняла смысл этой аброкадабры, вернее её перевод:
Цитата
Write(''ў_¤Ёв_ Ё┐п д c< ¤<п дRа┐ вЁаRў -Ёп: ');

И в [#$0D,#$0A] выдает тоже ошибку, почему?
и что такое EoF? blink.gif
tst-ou-w.txt - это я так понимаю имя файла, а мне его заранее создать придется?
Цитата

Для копирования файлов и текстов очень рекомендую использовать программку Far. Знакома ты с ней? Ответь, пожалуйста.

Нет
Цитата
Постарайся, чтоб при копировании русские буквы не превратились в белиберду. Обязательно скажи, удалось ли тебе это.

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

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


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

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

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


Gold_Fish, извини, я неправильно (не в той кодировке запостил прогу, каюсь.. Впредь буду внимательнее.

> почему пишет что begin не хватает в:
...
> И в [#$0D,#$0A] выдает тоже ошибку, почему?
Вот это я не знаю.. пробовал смоделировать разными способами - не вышло. Будем надеяться, что оно пройдет в правильной кодировке, либо вернемся к этому потом еще раз.

> и что такое EoF?
Это признак конца файла (End of File). Это функция, которая возвращает false покак конец не достигнут, а потом true. В данном случае чтение из файла продолжается до обнаружения его конца.

> tst-ou-w.txt - это я так понимаю имя файла, а мне его заранее создать придется?
Заранее не надо, это выходной файл, он сам создается заново. Имя можно изменить, как тебе нравится, или вообще запрашивать юзера имя выходного файла, как запрашиваем имя входного.

> Никак у меня с русскими не получается, он не хочет почему-то
> переключаться на русский текст... nea.gif
В Паскале, если это TP или BP, переключаться на русский сложно.. Если у тебя есть возможность, советую переключиться на FPC (FreePascal). Его можно скачать с сайта freepascal.org . Он совершенно бесплатный, но весит 28 мегов, поэтому на диалапе его качать замучишься.. Но в нем не только переключаться можно будет на русский, но и много другого хорошего (это как бы дальнейшее развитие ТР).
Но он тоже работает в кодировке DOS. И чтобы правильно копировать файлы, я настоятельно рекомендую тебе установить Far. Я тебя спрашивал о нем раньше, но ты деликатно промолчала. Ответь сейчас - можешь его поставить? Ты работаешь на своей машине или где-то еще? Весит он чуть больше 1 мега, взять можно на rarlab.com , при этом он тоже бесплатный. Когда ты его установишь, пойди в директорию
C:\Program Files\Far\Addons\Tables\Cyrillic\
и запусти скрипты KOI8-R.reg и Windows-1251.reg, нажми там все Ок, а потом перезапусти Фар.
Дальше объясню, когда подтвердишь установку..

> А так суть остального и предназначения я поняла smile.gif
Вот и славненько..

> Ой сколько я много вопросов накатала, извиняюсь, но так вышло smile.gif
Задавай сколько хочешь. Главное - чтоб поняла smile.gif
Ниже помещаю текст программы в правильной кодировке. Но если ты его будешь копировать из браузера через notepad, то русского все равно не будет. Нужен Far. Ясно?
Ну, давай, успехов тебе.. smile.gif
{ Hyphenation
Version 0.2
for Gold_Fish by Lapp }

const
Lx=30;
Vowels_Win:set of char=
['└','р','┼','х','и','╕','╚','ш','╬','ю','╙','є','█','√','▌','¤','▐','■','▀',' '];
Vowels_DOS:set of char=
['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];


var
fIn:file of char;
fOu:text;
fName,s:string;
c,d:char;
i,l,ws:integer;
Vow:set of char;
Gap,Start:boolean;

begin
Write('Введите имя файла для форматирования: ');
ReadLn(fName);
Assign(fIn,fName);
ReSet(fIn);
Assign(fOu,'tst-ou-w.txt');
ReWrite(fOu);
repeat
l:=0;
s:='';
d:=#0;
repeat
d:=c;
Read(fIn,c);
if not (c in [#$D,#$A]) then s:=s+c;
Inc(l)
until (l=Lx)or((d=#$D)and(c=#$A))or(EoF(fIn));
WriteLn(fOu,s)
until EoF(fIn);
Close(fIn);
Close(fOu);
ReadLn
end.


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


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

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


Цитата(Gold_Fish @ 7.12.2006 21:49) *

Спасибки, Lapp smile.gif
Почти все дошло, кроме:
почему пишет что begin не хватает в:

Может const не скопировала?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Из браузера я не копирую, а сама перепечатываю в Паскаль, мне так разобраться легче smile.gif
Цитата
Ну, давай, успехов тебе..

Спасибки, сейчас буду разбираться smile.gif
Ах, да, я на своем компе работаю smile.gif
И ещё:
Цитата
И чтобы правильно копировать файлы, я настоятельно рекомендую тебе установить Far. Я тебя спрашивал о нем раньше, но ты деликатно промолчала.

Я писала, что не знакома с этой прогой no1.gif
Я вспомнила у меня папа всегда ей пользуется, но она у него какая-то древняя smile.gif , поэтому я её не открываю

Цитата(Pola @ 8.12.2006 11:16) *

Может const не скопировала?

Не, я писала const unsure.gif


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


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

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

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


Цитата(Gold_Fish @ 8.12.2006 16:45) *

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

Сама перепечатываешь - это хорошо, но внимание удвой, как минимум.. Одна точка вместо запятой - и все в тартарары.. smile.gif
Отлично! вот папа будет рад, что ты у него будешь консультироваться.. smile.gif)
Она выглядит как старый добрый Нортон, потому и кажется древней. Но она внутри молодая! smile.gif))))


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


Новичок
*

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

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


Я установила новый, т к в старом Windows-1251.reg не было, надеюсь мне папа ничего не сделает smile.gif)) , а что дальше?
Насчет внимательности, это да, стараюсь внимательно делать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


Страничка freepascal.org не хочет открываться blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


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

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

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


Цитата(Gold_Fish @ 8.12.2006 17:18) *

Я установила новый, т к в старом Windows-1251.reg не было, надеюсь мне папа ничего не сделает smile.gif)) , а что дальше?
Насчет внимательности, это да, стараюсь внимательно делать smile.gif

Cool! Дальше так..
Навигация там простая - две независимых панели, переключение между ними клавишей Tab, работать можешь на любой. Полоска, выбирающая активный файл, двигается стрелками (рекомендую оставить мышь отдыхать). F9 выводит в некое меню, где, например, можно настроить вид панелей (рекомендую Full). Запомнить настройки - Shift-F9. Все основные команды (копировать, двигать, удалять..) на F-клавишах, рекомендую запомнить основные (внизу есть подсказка для них, реагирующая на нажатие Shif и Alt). Копирование файлов обычно происходит между панелями, но можно указать любой путь вручную. Запуск на выполнение - Enter, также и вход в поддиректории. Две точки на верхней строчке (есть во всех директориях, кроме корневых на дисках) - это выход наверх (стандартное обозначение в DOS и UNIX). Просмотр внутренностей любого файла - F3.

Что нам сейчас важно, это его встроенный редактор. Сделаем одно полезное
Упражнение:
Скопировать программный текст из окна браузера (то бишь, отсюда) в файл так, чтоб не испортить русский текст (строковые константы и комментарии).
Выполняем:
1. Забрать нужный текст в браузере в буфер (закрасить курсором, нажать Ctrl-C).
2. В Фаре зайти в нужную директорию (или создать новую - F7 - и зайти в нее).
3. Нажать Shift-F4 (открытие нового файла для редактирования). На запрос имени ввести желаемое имя (оно должно иметь расширение pas, если это паскалевская прога - например, hyphen.pas).
4. Убедись, что текущая кодировка - DOS. Она обозначена сверху, примерно в серединке. Если там написано Win или еще что-то, нажми клавишу F8 - при этом эта кодировка должна меняться между DOS и Win (другие установленные кодировки можно выбрать по Shif-F8). Примечание: этот пункт зависит от того, установила ли ты таблицы, как я просил тя в предыдущем мессадже.
5. Если ты уверена, что кодировка есть DOS, делай paste (как обычно, Ctrl-V). Скопированный из браузера текст при этом должен вставиться. Чтобы деселектить блок, можешь нажать Ctrl-U, но это не важно.
6. Записать файл на диск (F2, смотри подсказку на нижней строчке).
7. Выйти (Esc).
Созданный таким образом файл можно теперь загрузить в редактор TP (или FPC, если скачаешь). Проверь, сохранились ли русские буквы и рапортуй smile.gif
Цитата(Gold_Fish @ 8.12.2006 17:34) *

Страничка freepascal.org не хочет открываться blink.gif

Это жесть.. sad.gif
А ты правда готова качать 28 мег?.. Какой у тя коннекшн? На диалапе при всех самых благоприятных обстоятельствах (что бывает редко) это займет не меньше полутора часов.. Но оно того стОит! smile.gif
Вот прямой линк на файл на русском зеркале:
ftp://ftp.chg.ru/pub/lang/pascal/fpc/dist....i386-win32.exe
- надеюсь, он сработает..
Ну, давай.. smile.gif


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


Новичок
*

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

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


Цитата(Lapp @ 9.12.2006 5:18) *

А ты правда готова качать 28 мег?.. Какой у тя коннекшн? На диалапе при всех самых благоприятных обстоятельствах (что бывает редко) это займет не меньше полутора часов.. Но оно того стОит! smile.gif
Вот прямой линк на файл на русском зеркале:
ftp://ftp.chg.ru/pub/lang/pascal/fpc/dist....i386-win32.exe
- надеюсь, он сработает..
Ну, давай.. smile.gif

Вот, если чесно мне уже все равно как долго его качать, лишь бы сделать задачу быстрее, сдавать надо, а у меня не сделано mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


Премногоуважаемый Lapp! smile.gif))
Я создала обычный вордовский файл, там написала текст, и все smile.gif)) И все равно не так, что делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


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

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

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


Цитата(Gold_Fish @ 9.12.2006 13:52) *

Премногоуважаемый Lapp! smile.gif))
Я создала обычный вордовский файл, там написала текст, и все smile.gif)) И все равно не так, что делать?

Милейшая исполнительница желаний безумных старух, Вы создали, извиняюсь-с - doc-файл?.. smile.gif
Дружок, пойди в неказистый синенький Фар, создай там в рабочей твоей директории новый файл - назови, скажем, d.txt. Убедись, однако, что кодировка состоит DOS и сокопируй туда вот этот самовый бред.. сорри, вот эти мои заумные мысли - да, да, прямо отсюда. Да и сохрани его, да и закрой степенно..
Затем, нимало не отдыхаша, открой на редактирование еще один новый файл - и нареки имя ему w.txt. Закокококо.. кхм-кхм.. закопируй туда то же самое, но только в этот раз да вразумит тебя святой Пингвин, покровитель всех программеров, соблюсти кодировку при значении Win (рубильник F8 на твоем распределительном щитке) - да установи оное значение ДО копирования, противу сказать опосля..
И етути двое фалОв да будут отныне для тя тестовыми, ако в транслейшне - попробовательными..
А о сатнинском Word'е - и думать забудь, и трогать его не смей, и выброси его в геенну огненную, и - самое главное - НИКОГДА НЕ смотри в нутро поганое файла того, что создала ты в нем (переключатель F3 (просмотр файла в Фаре) и не трогай даже! ну, если тронешь - ну, сходи руки помой smile.gif )
O'kay???..


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


Новичок
*

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

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


Здраствуйте, друг мой Lapp! smile.gif)) (Снова Вас тревожит исполнительница желаний безумных старух) smile.gif))
Все я сделала как Вы указали,
будьте так любезны, скажите, что дальше нужно делать? rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


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

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

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


Вот вариант, читающий файл и выдающий отдельно строки (s) и слова (t), попавшие на разрыв (то есть те, которые нужно переносить). Вывод в файл я пока убрал (закомментировал) - вставим потом, а пока вывод идет на экран. Длину строки (Lx) можешь поварьировать. Разберись с этим, как следует, и попробуй продвинуться. На вопросы по программе отвечу..
{ Hyphenation
Version 0.3
- getting the last word
- reading the file
for Gold_Fish by Lapp }

const
Lx=40;
Vowels_Win:set of char=
['└','р','┼','х','и','╕','╚','ш','╬','ю','╙','є','█','√','▌','¤','▐','■','▀',' '];
Vowels_DOS:set of char=
['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];


var
fIn:file of char;
fOu:text;
fName,s,t:string;
c,d:char;
i:integer;
Vow: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);}
repeat
s:='';
d:=#0;
repeat
d:=c;
Read(fIn,c);
if not (c in [#$D,#$A]) then s:=s+c
until (Length(s)=Lx)or((d=#$D)and(c=#$A))or(EoF(fIn));
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;
WriteLn('s=',s:Lx+5,' t=',t);
{WriteLn(fOu,s)}
until EoF(fIn);
Close(fIn);
{ Close(fOu); }
;ReadLn
end.


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


Новичок
*

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

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


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

lol.gif

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

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

 





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