![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Nutcase |
![]()
Сообщение
#1
|
Гость ![]() |
Имеется файл, элементами которого являются отдельные слова. Если слово в файле начинается на букву 'k', то заменить ее на 'K'.
Знаю, что для того чтобы заменить ВСЕ 'k' буквы в файле, программа будет выглядеть примерно так: var f:file of char; а вот что исправить, чтобы заменялось только если буква находится в начале слова? ![]() Спасибо. Сообщение отредактировано: volvo - 2.11.2006 18:52 |
![]() ![]() |
APAL |
![]()
Сообщение
#2
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Не забываем про теги!
Цитата а вот что исправить, чтобы заменялось только если буква находится в начале слова? Ничего не исправлять, а написать заново. Пусть файл будет текстовым, тогда читать построчно. Как разложить строку на слова - читай в F.A.Q. -------------------- |
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
Смотрел faq, не нашел.
Помогите! |
APAL |
![]()
Сообщение
#4
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
-------------------- |
TR@N |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: YUra Репутация: ![]() ![]() ![]() |
А вот мой вариант программы (работает безотказно-ПРОВЕРЯЛ ![]() правда может чуть не стандартный (писал быстро) Код program bukva_k; uses crt; const max=20; var f :text; str :string; i,j,i_max:integer; mas:array [1..max] of string; begin assign (f, 'c:\a.txt'); reset (f); i:=1; while (not EOF(f)) do begin readln (f,mas[i]); for j:=1 to length(mas[i]) do begin if (j=1) and (mas[i][j]='k') then mas[i][j]:='K' else if (mas[i][j]=' ') and (mas[i][j+1]='k') then mas[i][j+1]:='K'; end; i_max:=i; i:=i+1; end; for i:=1 to i_max do writeln(mas[i]); close(f); end. Прикрепленные файлы ![]() |
Nutcase |
![]()
Сообщение
#6
|
Гость ![]() |
Спасибо, буквы на экране меняются, но вот в файл почему-то не записываются...
![]() |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Работает говоришь безотказно ? Хм, а как ты мне объяснишь вот такую запись :
mas[i][j] при таком описании mas:array [1..max] of string; Ну это уже так на сладкое, а вообще твоя программа не прошла ни один тест. var Сообщение отредактировано: volvo - 2.11.2006 18:53 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
GoodWind |
![]()
Сообщение
#8
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
klem4, а если в файле больше 100 слов ?
да и память экономить стОит... var да и этой конструкции я не понял: if (s[1] in ['k','K']) then w[i] := s[1] else w[i] := s; Сообщение отредактировано: volvo - 2.11.2006 18:53 -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
А если во время заполнения резервного файла в твоем случае, на диске не окажется свободного места ? Ты об этом подумал ? придираться можно сколько угодно.
ps по поводу строки это я переусердствовал : if s[1] = 'k' then s[1] := 'K'; w[i] := s; Сообщение отредактировано: volvo - 2.11.2006 18:54 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
GoodWind |
![]()
Сообщение
#10
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
ладно, завершу флейм всего одной фразой:
"объем жесткого диска, как правило, в сотни раз превышает объем ОЗУ" -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Я немного добавлю.
Как правило для такой задачи тестовый файл в школе едвали превысит 20 слов. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
APAL |
![]()
Сообщение
#12
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Работает говоришь безотказно ? Хм, а как ты мне объяснишь вот такую запись : mas[ i ][j] при таком описании mas:array [1..max] of string; mas[ i ][j] А что тебя смущает в такой записи? Идет обращение к j-ому символу в строке i -------------------- |
klem4 |
![]()
Сообщение
#13
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Век живи, век учись ... никогда не видел чтобы так работали с массиовом строк.
![]() У меня это вызвало подозрение .. Извиняюсь. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
F.I.A.T. |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата(TR@N @ 23.03.2006 0:41) А вот мой вариант программы (работает безотказно-ПРОВЕРЯЛ Уважаемый TR@N! Вот это ваше заявление вызывает по меньшей мере 2 вопроса: если (как Вы утверждаете, что еще не доказано, об этом поговорим чуть позже), Ваш вариант работает безотказно, то стало быть, по-Вашему, вариант из FAQ работает с ошибками? Очень опрометчиво... Я видела, КАК тестируются те программы, которые приводятся в FAQ-е, не Вам искать в них ошибки. Объясняю - почему:Цитата(TR@N @ 23.03.2006 0:41) readln (f,mas[ i ]); А скажите-ка мне, уважаемый, ЧТО произойдет, если последний (J) символ строки будет равен пробелу? Не приведет ли это: mas[ i ][j+1]='k'к попытке читать символ ЗА концом строки, и соответственно, к результату, которому нельзя верить? FPC, напрмер, на это моментально выдаст Segmentation Fault, результат работы в TP/BP будет зависеть от настроек среды программирования/опций компилятора... Так что, я бы порекомендовала Вам в следующий раз более внимательно тестировать приводимые программы, и, соответственно, тщательно выбирать выражения... |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 10:01 |