1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| _JC_ |
13.10.2005 13:45
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
Помогите решить задачку!
Дано: текст на русском языке. Задане: переформатировать текст так, чтобы длина любой строки не превосходила 40 символов.(Выравнивать по правому краю не требуется). Спасибо заранее! |
![]() ![]() |
| volvo |
13.10.2005 14:24
Сообщение
#2
|
|
Гость |
|
| Shura |
13.10.2005 14:27
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 136 Пол: Мужской Реальное имя: Александр Репутация: -2 |
Думаю, можно сделать так:
Открываем исходный файл для чтения, и новый - для записи (в конце старый удаляем, а новый переименовываем по имени старого). А дальше, считываем слова из исходного файла и записываем их в новый. Причем если при записи нового слова в очередную строку нового файла, длина строки превышает сорок, то НЕ дописываем это слово на этой строке - переносим на следующее. -------------------- Старайтесь восполнять пробелы в области незнания! ;-D
|
| _JC_ |
13.10.2005 15:09
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
Спасибо большое прости что не воспользовался поиском!
У меня появился вопрос, а можноли сделать так что бы вводишь текст с клавиатуры и он разбивается по 40 символов в строку? Если да то ты не мог бы сказать как это сделать??? |
| klem4 |
13.10.2005 15:23
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
объяви s : string[40], больше сорока ты в нее не запишеш, но все лишнее просто исчезнет, еще можешь вводить строку по символьно.
можно как-то на подобии вот этого, только наприер реализовать это как ф-ю, которая еще будет возвращать кол-во строк : uses crt; можно обойтись и без массива и например сразу записывать строку в файл. Сообщение отредактировано: klem4 - 13.10.2005 15:54 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| volvo |
13.10.2005 15:45
Сообщение
#6
|
|
Гость |
klem4, а проверять на нажатие "расширенной" клавиши не надо? А то если юзер нажмет клавишу "Стрелка вверх", то в строке появятся символы #0 и "H" ...
|
| klem4 |
13.10.2005 15:54
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
исправил вроде
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| _JC_ |
13.10.2005 16:01
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
А почему каждый символ воспринимается только со 2-ого нажатия можно ли это исправить? И как сделать чтобы он переносил не на серидине слова а его целиком если оно не влазит в строку???
|
| klem4 |
13.10.2005 16:06
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата(_JC_ @ 13.10.2005 17:01) А почему каждый символ воспринимается только со 2-ого нажатия можно ли это исправить? И как сделать чтобы он переносил не на серидине слова а его целиком если оно не влазит в строку??? не заню, у меня воспринимает с первого нажатия нормально, а поповоду второго ... мне кажется ты не понял, тут осуществляется ввод текста следующим образом : начинаешь ввод, если ввел 40 символов, то начинается заполнение второй строчки , после ее заполнения следует третья и т.д. или же весь процесс останавливается при нажатии ESC. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| _JC_ |
13.10.2005 16:07
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
Volvo мщжет ты мне подскажешькак мне сделать эту задачу???
|
| klem4 |
13.10.2005 16:09
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата переносил не на серидине слова а его целиком и как ты себе это представляешь при твоей постановке задачи ?!? ты же сказал что тебе нужено сокращать строку до 40 символов !? В этом случае вполне вероятно что какое-либо слово обрубится... Сообщение отредактировано: klem4 - 13.10.2005 16:12 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| _JC_ |
13.10.2005 16:35
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
Да вероятно ты прав извини!
|
| volvo |
13.10.2005 17:10
Сообщение
#13
|
|
Гость |
Цитата(_JC_ @ 13.10.2005 15:01) как сделать чтобы он переносил не на серидине слова а его целиком если оно не влазит в строку??? Вот так: uses crt; |
| _JC_ |
14.10.2005 22:22
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Реальное имя: Макс Репутация: 0 |
Извиняюсь за то что беспокою, но этот Му.....ЖИК сказал что нужно что бы текст был загружен из файла! Вобщем задача звучит так : загруженый текст из файла разбить на строки не длиннее 40 символов! Поможите??? Спасибо!
|
| volvo |
14.10.2005 22:34
Сообщение
#15
|
|
Гость |
_JC_, приводим задачу к уже решенной :D :
uses crt; P.S. Это будет работать, когда весь текст забит в файле в одну строку. Если есть символы #13 (перевод строки), то нужно будет их соответствующим образом обрабатывать... Тестировалось на файле: Цитата start finish end begin end begin start finish end begin end begin start finish end begin end begin start finish end begin end begin |
![]() ![]() |
|
Текстовая версия | 9.12.2025 13:13 |