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

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

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

> Замена букв в файле.
сообщение
Сообщение #1


Гость






Имеется файл, элементами которого являются отдельные слова. Если слово в файле начинается на букву 'k', то заменить ее на 'K'.
Знаю, что для того чтобы заменить ВСЕ 'k' буквы в файле, программа будет выглядеть примерно так:
var f:file of char;
s:char;
i:integer;
begin
assign (f, 'c:\a.txt');
reset (f);
while (not EoF) do
begin
read (f,s);
if (s='k') then s:='K';
seek(f, filepos(f)-1);
write(f,s);
end;
close(f);
end.


а вот что исправить, чтобы заменялось только если буква находится в начале слова? unsure.gif
Спасибо.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Смотрел faq, не нашел.
Помогите!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Цитата(Гость @ 22.03.2006 23:26) *

Смотрел faq, не нашел.


НЕ ВЕРЮ!

http://forum.pascal.net.ru/index.php?s=&sh...indpost&p=28059


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


Цитата(APAL @ 23.03.2006 0:31) *


А вот мой вариант программы (работает безотказно-ПРОВЕРЯЛ good.gif ),
правда может чуть не стандартный (писал быстро)

Код

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.


Прикрепленные файлы
Прикрепленный файл  FORUM.PAS ( 564 байт ) Кол-во скачиваний: 266
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(TR@N @ 23.03.2006 0:41)
А вот мой вариант программы (работает безотказно-ПРОВЕРЯЛ
Уважаемый TR@N! Вот это ваше заявление вызывает по меньшей мере 2 вопроса: если (как Вы утверждаете, что еще не доказано, об этом поговорим чуть позже), Ваш вариант работает безотказно, то стало быть, по-Вашему, вариант из FAQ работает с ошибками? Очень опрометчиво... Я видела, КАК тестируются те программы, которые приводятся в FAQ-е, не Вам искать в них ошибки. Объясняю - почему:

Цитата(TR@N @ 23.03.2006 0:41)
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;

А скажите-ка мне, уважаемый, ЧТО произойдет, если последний (J) символ строки будет равен пробелу? Не приведет ли это:
mas[ i ][j+1]='k'
к попытке читать символ ЗА концом строки, и соответственно, к результату, которому нельзя верить? FPC, напрмер, на это моментально выдаст Segmentation Fault, результат работы в TP/BP будет зависеть от настроек среды программирования/опций компилятора...

Так что, я бы порекомендовала Вам в следующий раз более внимательно тестировать приводимые программы, и, соответственно, тщательно выбирать выражения...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Nutcase   Замена букв в файле.   23.03.2006 1:37
APAL   Не забываем про теги! Ничего не исправлять, …   23.03.2006 1:46
Гость   Смотрел faq, не нашел. Помогите!   23.03.2006 3:26
APAL   Смотрел faq, не нашел. НЕ ВЕРЮ! http://for…   23.03.2006 4:31
TR@N   НЕ ВЕРЮ! [url=http://forum.pascal.net.ru/ind…   23.03.2006 4:41
F.I.A.T.   А вот мой вариант программы (работает безотказно-П…   29.03.2006 13:15
Nutcase   Спасибо, буквы на экране меняются, но вот в файл п…   28.03.2006 0:33
klem4   Работает говоришь безотказно ? Хм, а как ты мне об…   28.03.2006 10:12
APAL   Работает говоришь безотказно ? Хм, а как ты мне о…   28.03.2006 21:12
GoodWind   klem4, а если в файле больше 100 слов ? да и памят…   28.03.2006 11:11
klem4   А если во время заполнения резервного файла в твое…   28.03.2006 11:22
GoodWind   ладно, завершу флейм всего одной фразой: "объ…   28.03.2006 20:25
klem4   Я немного добавлю. Как правило для такой задачи те…   28.03.2006 20:27
klem4   Век живи, век учись ... никогда не видел чтобы так…   28.03.2006 21:20


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

 





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