Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2019, 14:11   #1
Космодемьян
 
Регистрация: 09.02.2019
Сообщений: 7
По умолчанию В текстовом файле несколько последовательных одинаковых символов заменить одним (паскаль)

Не пойму почему не работает программа!?
Т.е. задача: В ТЕКСТОВОМ ФАЙЛЕ НЕСКОЛЬКО ПОСЛЕДОВАТЕЛЬНЫХ ОДИНАКОВЫХ СИМВОЛОВ ЗАМЕНИТЬ ОДНИМ.

Если записывать значения в файл через программу, то она робит, а если записать значения в блокнот, а потом их построчно читать в программе, то она не робит. в чем прикол?

Мне препод сказал обойтись одной переменной. Типа f1, f2 заменить одной f. Это вообще возможно в данной задаче? Ничего не пойму.


Код:
function Replace(s:string):string;
var
   i, j,n: integer;
begin
   j:=0;
   n:=length(s);
  for i := 1 to n-1 do
    if s[i] <> s[i+1] then
     begin
      j:=j+1;
      s[j]:=s[i];
     end;
    j:=j+1;
    s[j]:=s[n];
  s[0]:=chr(j);
  Replace:=s;
end;

Var f1,f2:text;
s,f1_name,f2_name string;
Begin
 write('Введите имя файла f1: ');
 readln(f1_name);
 readln;
 write('Введите имя файла f2: ');
 readln(f2_name);
 assign(f1,f1_name);
 assign(f2,f2_name);
 reset(f1);
 rewrite(f2);

 while not eof(f1) do
 begin
  readln(f1,s);
  s:=Replace(s);
  writeln(f2,s);
  writeln('Преобразованная строка= ',s);
 end;

 close(f1);
 close(f2);
 readln;
 End.
прога не то что в файл ничего не записывает, она даже на экран результат не выводит :\

Возможно ли тут не использовать доп файл?

Последний раз редактировалось Космодемьян; 11.02.2019 в 16:37. Причина: ошибка
Космодемьян вне форума Ответить с цитированием
Старый 11.02.2019, 17:35   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,529
По умолчанию

"Робить" она не может в принципе, ошибка в определении переменных (не буду указывать, сам ищи, пропущено :). Если использовать один и тот же файл, то надо завести массив строк, прочитать в него содержимое файла , закрыть файл для ввода, преобразовать строки в массиве, открыть файл с тем же именем для вывода, записать, закрыть. Не выводит на экран - видимо, не находит файла, тем более что для вывода сообщений об ошибке открытия ничего не сделано. Если не прописан полный путь к файлу, он должен по умолчанию быть в папке, определенной настройками среды программирования.

Как-то так. Вот такая конструкция рабочая. Replace я читать ленюсь, взамен вставил затычку.
Код:
program File_T ;

Var F12:text;
i,j: integer ;
mastring: array[0..10] of string ;
s,F1_name: string;
Begin
 write('Input name of file F1: ');
 readln(F1_name);
 assign(F1,f1_name);
 reset(F1);

 i := 0 ;
 while not eof(F1) do
 begin
  readln(F1,s);
  if Length(s) > 0 then
    begin
     mastring[i] := s + '1234' ; {Zatychka}
     writeln(' New string = ',mastring[i]);
     Inc (i)
    end ;
 end;
 close(F1);
	;
  rewrite(F1);
  for j := 0 to i-1 do 
     writeln(F1,mastring[j]);
  close(F1);
 readln;

End.

Последний раз редактировалось digitalis; 11.02.2019 в 22:42.
digitalis на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом kava13 Общие вопросы C/C++ 0 03.06.2018 19:37
Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Заменить в строке слова S на слова vladeasy Общие вопросы C/C++ 1 18.01.2018 21:01
Замена символов в текстовом файле Deniskarey Общие вопросы C/C++ 0 15.12.2011 23:49
как заменить символ в текстовом файле? mrBond007 Microsoft Office Excel 13 18.08.2011 18:13
несколько пробелов заменить одним пробелом Андрю)(@ Помощь студентам 4 10.11.2008 14:56