Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовые файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Investor
С помощью какого алгоритма можно осуществить поиск окончиния слова в текстовом файле и заменить его на другое?
klem4
Что значит окончание слова ? Да еще и в файле... можно выделать несколько последних букв напирмер, окончание это слишком расплывчато
APAL
Строки и работа с ними: http://forum.pascalnet.ru/index.php?showtopic=2361


добавлено klem4

Apal yes2.gif

+ FAQ : Файлы
volvo
Investor, я же приводил в твоей прошлой теме готовую программу. Чем она тебя не устроила? Достаточно просто читать из одного файла, преобразовывать строку как я показал, и писать в другой файл, а потом удалить старый файл и переименовать новый...

В чем проблема?
Investor
Цитата(volvo @ 11.12.2005 14:49) *

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

В чем проблема?

Дело в том, что твоя готовая программа не работает. Там, например, есть неизвестные паскалю функции и типы данных.

Цитата(APAL @ 11.12.2005 14:47) *

Строки и работа с ними: http://forum.pascalnet.ru/index.php?showtopic=2361
добавлено klem4

Apal yes2.gif

+ FAQ : Файлы

Спасибо, начинаю врубаться. Но пока не сильно
volvo
Я же оставил в твоей теме ссылку, и написал тебе в ПМ, ОТКУДА надо скачать функцию, чтобы все заработало !!! mad.gif Что за люди - НЕ РАБОТАЕТ, и ВСЕ !!! Если скопированное символ в символ не запускается...

Вот теперь работает ???

{
    !!! Это - ДОСЛОВНО !!! Функция, которая лежит по ссылке,
    находящейся у тебя в топике и в PM !!!
}

const
  delimiter = [#32, ',', '.', '!', ':'];
type
  wrd_info = record
    start, len: byte;
  end;

function get_words(s: string;
         var words: array of wrd_info): integer;
var
  count: integer;

  i, curr_len: byte;

begin
  count := -1; i := 1;
  while i <= length(s) do begin

    while (s[i] in delimiter) and (i <= length(s)) do inc(i);

    curr_len := 0;
    while not (s[i] in delimiter) and (i <= length(s)) do begin
      inc(i); inc(curr_len);
    end;

    if curr_len > 0 then begin
      inc(count);
      with words[count] do begin
        start := i - curr_len;
        len := curr_len
      end;
    end;

  end;
  get_words := count + 1;
end;

{ !!! Это - из моего ответа в твой топик !!!  }
const
  max_word = 255;
var
  words: array[1 .. max_word] of wrd_info;
  s: string;
  i, n: integer;

begin
    readln(s);
    n := get_words(s, words);
    for i := 1 to n do
      if copy(s, words[i].start + words[i].len - 3, 3) = 'ина'
      then s[ words[i].start + words[i].len - 1 ] := ' ';
      { (чтобы не было проблем со сдвигом строки) }

    writeln(s);
end.


А теперь - ВНИМАНИЕ !!! Вопрос:
Каких типов данных и функций не хватает для запуска программы? mad.gif
Investor
function get_words(s: string;
var words: array (чё тут нада поставить??? - 1..max_wrd не подходит) of wrd_info): integer
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.