Работа с файлами, Задача. Замена буквы звёздочкой |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Работа с файлами, Задача. Замена буквы звёздочкой |
BoB@N |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Задача:
/В каждом из слов текстового файла замените последнюю букву звёздочкой/ 1)Как сделать так,чтобы прога подсчитывала кол-во символов в слове? |
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
BoB@N |
Сообщение
#3
|
|||
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Ого как быстро!!
|
|||
BoB@N |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
klem4, смотри:
Вот пусть такой простенький первоначальный исходник с надписью в текстовом файле: “Turbo Pascal Forever” Код uses crt; var f: text; l: string; begin clrscr; assign(f, 'd:\text.txt'); reset(f); Read(f,l); Writeln(l); readkey; end. Вот пример твоего метода: Код const limits = [#0..#32,'.',',',':',';','!','?','"']; type TWords = array[1..40] of string; var text : string; words : TWords; function GetWords(s : string; var w : TWords) : byte; var i,back,n : byte; begin i := 1; n := 0; while(i<=length(s)) do begin while(i<=length(s)) and (s[i] in limits) do inc(i); if i<=length(s) then begin back := i; while(i<=length(s)) and not(s[i] in limits) do inc(i); inc(n); w[n] := copy(s, back, i-back); end; end; GetWords := n; end; Как его применить к данной проге? |
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
например вот так :
uses crt; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#6
|
Гость |
BoB@N
Цитата Как сделать так,чтобы прога подсчитывала кол-во символов в слове? Ты как раз выбрал не совсем подходящий вариант... По той же ссылке, которую тебе дал klem4, прямо перед его способом есть мой способ, при котором Цитата (информация о найденных словах хранится в массиве, но НЕ в виде самих слов, а в виде <начало слова в строке, длина слова>) Я так понимаю, длина слова это то, что тебе надо? |
BoB@N |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
volvo, совершенно верно!
Только вопрос тот же: Как применить к исходнику выше... Сообщение отредактировано: BoB@N - |
volvo |
Сообщение
#8
|
Гость |
Цитата Как применить к исходнику выше const Проще, не правда ли? |
BoB@N |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Ой, сдесь что-то не так!!!
(Constant out of range.) Код begin count := -1; i := 1; while i <= length(s) do begin |
volvo |
Сообщение
#10
|
Гость |
Цитата Ой, сдесь что-то не так!!! У меня работает... Компилятор какой? Ага... Измени на var Странно, FPC пропускает... |
GoodWind |
Сообщение
#11
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Цитата (Constant out of range.) у тебя переменная count какого типа ? byte... бегом в конспекты и смотреть миниум и максимум для byte добавил позже: я только что отправил volvo перечитывать конспекты прости volovo, я думал это его исходник Сообщение отредактировано: GoodWind - -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
BoB@N |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Как я понимаю результат проги должен выводится на экран вроде, например: "Turb* Pasca* Foreve*"...
А у меня просто черный экран |
volvo |
Сообщение
#13
|
Гость |
У тебя в файле последняя строка - пустая? Это глюк Паскаля, если последняя строка файла - НЕ пустая, то она не прочитается через ReadLn(f, ...), так что добавь в файл TXT пустую строку.
P.S. Программа исправлена... Попробуй новую версию... Сообщение отредактировано: volvo - |
BoB@N |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Да-а-а мне до вас далеко!!!
Огромное СПАСИБО!!! |
Текстовая версия | 10.01.2025 6:34 |