Работа с текстовым файлом и строками в нем

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Работа с текстовым файлом и строками в нем

Сообщение Sonora » 23.05.2022 21:07:33

Помогите пожалуйста. В текстовом файле хранятся строки, состоящие из слов, разделенных одним или несколькими пробелами. Удалить в текущей строке те слова, которые начинаются и заканчиваются на одну и ту же букву, и записать преобразованные строки в новый файл.
Sonora
незнакомец
 
Сообщения: 3
Зарегистрирован: 23.05.2022 21:05:13

Re: Работа с текстовым файлом и строками в нем

Сообщение Sharfik » 24.05.2022 14:45:35

Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 638
Зарегистрирован: 20.07.2013 01:04:30

Re: Работа с текстовым файлом и строками в нем

Сообщение Снег Север » 24.05.2022 21:17:08

Стандартная функция фрипаскаля SplitString (модуль strutils)- https://www.freepascal.org/docs-html/rt ... tring.html указать в качестве разделителя пробел и получить набор слов в массиве. Потом пройтись в цикле по этому массиву и сравнивать первый и последний символ каждого строкового элемента. Вуаля!
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2849
Зарегистрирован: 27.11.2007 16:14:47

Re: Работа с текстовым файлом и строками в нем

Сообщение iskander » 25.05.2022 07:10:43

Снег Север писал(а): Потом пройтись в цикле по этому массиву и сравнивать первый и последний символ каждого строкового элемента.

Поколение Z избегает циклов, это прошлый век, они только усложняют логику кода. :)
iskander
постоялец
 
Сообщения: 465
Зарегистрирован: 08.01.2012 18:43:34

Re: Работа с текстовым файлом и строками в нем

Сообщение Снег Север » 25.05.2022 08:16:40

iskander писал(а):Поколение Z избегает циклов,

Поколение "Zа победу" - это я. А то, о чём вы написали - это поколение Ж.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2849
Зарегистрирован: 27.11.2007 16:14:47

Re: Работа с текстовым файлом и строками в нем

Сообщение скалогрыз » 26.05.2022 08:52:36

Sonora писал(а):В текстовом файле хранятся строки, состоящие из слов, разделенных одним или несколькими пробелами. Удалить в текущей строке те слова, которые начинаются и заканчиваются на одну и ту же букву, и записать преобразованные строки в новый файл.

Код: Выделить всё
function removeWords(inp: string): string;
var
  s: string;
  sb : string;
  ln : longint;
  i,j : longint;
begin
  s := '';
  j := 1;
  for i:=1 to length(inp) do
  begin
    if inp[i] = ' ' then begin
      sb := Copy(inp, j, i-j);
      ln := length(sb);
      if (sb<>'') and (sb[1]<>sb[ln]) then
       s:=s+sb;
      s:=s+' ';
      j := i+1;
    end;
  end;
  i:=length(inp)+1;
  sb := Copy(inp, j, i-j);
  ln := length(sb);
  if (sb<>'') and (sb[1]<>sb[ln]) then
    s:=s+sb;
  removeWords := s;
end;

var
  f, fout: text;
  s: string;
begin
  assign(f, 'input.txt');
  assign(fout, 'output.txt');
  reset(f);
  rewrite(fout);
  while not eof(f) do begin
    readln(f, s);
    s := removeWords(s);
    writeln(fout, s);
  end;

  close(f);
  close(fout);
end.
скалогрыз
долгожитель
 
Сообщения: 1801
Зарегистрирован: 03.09.2008 02:36:48

Re: Работа с текстовым файлом и строками в нем

Сообщение RRYTY » 26.05.2022 10:42:34

Снег Север Предложил более развитое решение.
RRYTY
новенький
 
Сообщения: 23
Зарегистрирован: 25.12.2021 10:00:32

Re: Работа с текстовым файлом и строками в нем

Сообщение wavebvg » 26.05.2022 10:49:14

Ваши решения работают, но, судя по условиям, это классическая задача на машину состояний и решается буфером и посимвольным чтение, иначе бы в условиях не было бы текстового файла.
wavebvg
постоялец
 
Сообщения: 329
Зарегистрирован: 28.02.2008 04:57:35

Re: Работа с текстовым файлом и строками в нем

Сообщение RRYTY » 26.05.2022 15:38:11

Так как объектом анализа/действия является слово (а никак не символ, слово анализируется по критериям первая/последняя - кстати, БУКВА, нифига не символ), то работать нужно со словами, анализируя первую/последнюю буквы.
RRYTY
новенький
 
Сообщения: 23
Зарегистрирован: 25.12.2021 10:00:32

Re: Работа с текстовым файлом и строками в нем

Сообщение Снег Север » 27.05.2022 07:54:57

RRYTY, любая буква - это символ. Ваш Кэп.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2849
Зарегистрирован: 27.11.2007 16:14:47

Re: Работа с текстовым файлом и строками в нем

Сообщение RRYTY » 27.05.2022 12:15:12

любая буква - это символ

Снег Север, не любой символ - буква. По условиям задачи требуется сравнивать не первый/последний символ, а букву. Есть такой грешок, стремление ТЗ воспринимать буквально. :D
Но, на практике, будет работать и при анализе первого/последнего байта, т.е. - символа.
RRYTY
новенький
 
Сообщения: 23
Зарегистрирован: 25.12.2021 10:00:32

Re: Работа с текстовым файлом и строками в нем

Сообщение Vadim » 27.05.2022 15:29:03

RRYTY писал(а):Но, на практике, будет работать и при анализе первого/последнего байта, т.е. - символа.

Даже с учётом того, что слова на русском языке в кодировке UTF-8/16? ;-)
Vadim
долгожитель
 
Сообщения: 4086
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Работа с текстовым файлом и строками в нем

Сообщение RRYTY » 29.05.2022 15:40:43

Проверил, в локали ru_RU.utf8, нет разных букв с одинаковым последним байтом. Нанайцы пусть проверяют самостоятельно. Вряд ли автор ветки - нанаец. Но, возможно из-за СВО, выполняет некий стратегический нанайский заказ.
RRYTY
новенький
 
Сообщения: 23
Зарегистрирован: 25.12.2021 10:00:32

Re: Работа с текстовым файлом и строками в нем

Сообщение Sonora » 29.05.2022 19:33:19

Спасибо вам всем большое за помощь!!
Sonora
незнакомец
 
Сообщения: 3
Зарегистрирован: 23.05.2022 21:05:13

Re: Работа с текстовым файлом и строками в нем

Сообщение zoltanleo » 02.06.2022 23:22:31

Вот почему я иногда читаю срачи - и тут можно выудить полезную для себя инфу. Вроде давно в Паскале, а про SplitString не знал ;)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 446
Зарегистрирован: 17.10.2013 10:55:01


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru
cron