Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

Мне препод сказал обойтись одной переменной. Типа 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 в 17:37. Причина: ошибка
Космодемьян вне форума   Ответить с цитированием
Старый 11.02.2019, 18:35   #2
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,239
Репутация: 438
По умолчанию

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

Как-то так. Вот такая конструкция рабочая. 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 в 23:42.
digitalis вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


23:45.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru