Страница 1 из 1
		
			
				Работа с текстовым файлом и строками в нем
				
Добавлено: 
23.05.2022 21:07:33 Sonora
				Помогите пожалуйста. В текстовом файле хранятся строки, состоящие из слов, разделенных одним или несколькими пробелами. Удалить в текущей строке те слова, которые начинаются и заканчиваются на одну и ту же букву, и записать преобразованные строки в новый файл.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
24.05.2022 14:45:35 Sharfik
				
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
24.05.2022 21:17:08 Снег Север
				Стандартная функция фрипаскаля SplitString (модуль strutils)- 
https://www.freepascal.org/docs-html/rt ... tring.html указать в качестве разделителя пробел и получить набор слов в массиве. Потом пройтись в цикле по этому массиву и сравнивать первый и последний символ каждого строкового элемента. Вуаля!
 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
25.05.2022 07:10:43 iskander
				Снег Север писал(а): Потом пройтись в цикле по этому массиву и сравнивать первый и последний символ каждого строкового элемента.
Поколение Z избегает циклов, это прошлый век, они только усложняют логику кода. 

 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
25.05.2022 08:16:40 Снег Север
				iskander писал(а):Поколение Z избегает циклов,
Поколение "Zа победу" - это я. А то, о чём вы написали - это поколение Ж.
 
			
		
			
				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.
 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
26.05.2022 10:42:34 RRYTY
				Снег Север Предложил более развитое решение.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
26.05.2022 10:49:14 wavebvg
				Ваши решения работают, но, судя по условиям, это классическая задача на машину состояний и решается буфером и посимвольным чтение, иначе бы в условиях не было бы текстового файла.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
26.05.2022 15:38:11 RRYTY
				Так как объектом анализа/действия является слово (а никак не символ, слово анализируется по критериям первая/последняя - кстати, БУКВА, нифига не символ), то работать нужно со словами, анализируя первую/последнюю буквы.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
27.05.2022 07:54:57 Снег Север
				RRYTY, любая буква - это символ. Ваш Кэп.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
27.05.2022 12:15:12 RRYTY
				любая буква - это символ
Снег Север, не любой символ - буква. По условиям задачи требуется сравнивать не первый/последний символ, а букву. Есть такой грешок, стремление ТЗ воспринимать 
буквально.  
 
 Но, на практике, будет работать и при анализе первого/последнего байта, т.е. - символа.
 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
27.05.2022 15:29:03 Vadim
				RRYTY писал(а):Но, на практике, будет работать и при анализе первого/последнего байта, т.е. - символа.
Даже с учётом того, что слова на русском языке в кодировке UTF-8/16? 

 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
29.05.2022 15:40:43 RRYTY
				Проверил, в локали ru_RU.utf8, нет разных букв с одинаковым последним байтом. Нанайцы пусть проверяют самостоятельно. Вряд ли автор ветки - нанаец. Но, возможно из-за СВО, выполняет некий стратегический нанайский заказ.
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
29.05.2022 19:33:19 Sonora
				Спасибо вам всем большое за помощь!!
			 
			
		
			
				Re: Работа с текстовым файлом и строками в нем
				
Добавлено: 
02.06.2022 23:22:31 zoltanleo
				Вот почему я иногда читаю срачи - и тут можно выудить полезную для себя инфу. Вроде давно в Паскале, а про SplitString не знал 
