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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2019, 17:57   #1
Андрей88991
Новичок
Джуниор
 
Регистрация: 22.12.2019
Сообщений: 3
По умолчанию Pascal ABC :Дан файл, ввести с клавиатуры слово которое нужно найти и заменить его на слово введенное с клавиатуры, кол-во строк в тексте файла (не одна)

Код:
var
a,c,v:string;
n:integer;
t: text;
begin
assign(t,'D:/файлы/СиАСОД.txt');
reset(t);
writeln('Введите искомое слово: ');
readln(a);
writeln('Введите слово для замены: ');
read(v);
while not seekeof(t)do
begin
read(t,c);
if (pos(a,c)>0)then
n:=pos(a,c);
delete(c,n,length(a));
insert(v,c,n);
end;
close(t);
rewrite(t);
write(t,c);
close(t);
end.
Вот,написал, что смог, но заменяет она лишь в последней строке и удаляет все остальные строки

Последний раз редактировалось Андрей88991; 23.12.2019 в 04:06.
Андрей88991 вне форума Ответить с цитированием
Старый 22.12.2019, 21:54   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Если в текстовом файле несколько строк, то надо работать либо через память (читать все строки в память, например, в строковый массив), либо через дополнительный (временный) файл, куда сбрасываем прочитанные и исправленные строки.
Если работаем через файл, то там будут заморочки в случае требования сохранить имя исходного файла (удаление исходного и переименование временного).
А так, как решено сейчас, то в цикле есть поиск, удаление и замена, но нет сохранения.
После выхода из цикла сохраняется последняя прочитанная строка.

PS: Форматируйте код. Выделите код и нажми кнопку [CODE]
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.12.2019, 04:08   #3
Андрей88991
Новичок
Джуниор
 
Регистрация: 22.12.2019
Сообщений: 3
По умолчанию

Виктор, простите пожалуйста, я только начинающий , не могли бы вы мне помочь именно с листингом программы, пожалуйста!!!
Андрей88991 вне форума Ответить с цитированием
Старый 23.12.2019, 09:55   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Листинг - это то, что получается после компиляции исходника, которого у тебя нет. Если по простому, без умных слов, то "напишите за меня прогу, я во всём этом как в лесу, мне только корочки надо, а эти Пыскали - гори они огнём".
digitalis вне форума Ответить с цитированием
Старый 23.12.2019, 15:45   #5
Андрей88991
Новичок
Джуниор
 
Регистрация: 22.12.2019
Сообщений: 3
По умолчанию

digitalis, Да, в дальнейшем мне не пригодится программирование в Паскаль, поэтому и попросил помощи
Андрей88991 вне форума Ответить с цитированием
Старый 23.12.2019, 22:07   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

1. Нет. Не помогу. И времен нет и интереса.
2.
Цитата:
Да, в дальнейшем мне не пригодится программирование в Паскаль, поэтому и попросил помощи
Делу тут не в Паскале. Не важно на каком языке надо реализовать задачу.
Утверждение о том, что Паскаль не пригодится - это глубокое заблуждение.
Не следует на себя надевать шоры.
Умение составлять алгоритм - это умение грамотно планировать свою работу и работу своих товарищей, подчинённых ...
Это вроде бы абстрактные фразы, но подумать следует.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.12.2019, 13:21   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

1. создать файл на диске д с именем СиАСОД и расширением txt
2. суть программы в том, что заполняется массив строк построчно из файла
3. в элементе массива ищется подстрока
4. если есть, то удаляется искомое слово и заменяется на нужное в элементе массива (если их несколько - тоже)
5. массив записывается в файл

Код:


function count_rec(t: text): integer;
var
  i: integer;
  c: string;
begin
  i := 0;
  
  reset(t);
  
  while not eof(t) do
  begin
    readln(t, c);
    inc(i);
  end;
  
  
  Result := i;
end;


function Parsre_F(t: text): string;
var
  s: string;
begin
  readln(t, s);
  result := s;
end;



var
  a, c, v: string;
  t: Text;
  ok:boolean;
  arr: array of string;
  i, k: integer;

begin
  
  c := 'D:\СиАСОД.txt';
  Assign(t, c);
  
  if FileExists(c) then 
  begin
    
    SetLength(arr, count_rec(t));
    
    i := 0;
    
    
    reset(t);
    
    while not eof(t) do
    begin
      arr[i] := Parsre_F(t);
      inc(i);
    end;
    
    close(t);

    
    writeln('Введите искомое слово: ');
    readln(a);
    writeln('Введите слово для замены: ');
    read(v);
    
    rewrite(t);
    ok:=false;
    for i := 0 to Length(arr) - 1 do
    begin
      
      
      
      k := pos(a, arr[i]);
      
      if (k <> 0) then 
      begin
      ok:=true;
        delete(arr[i], k, length(a));
        Insert(v, arr[i], k);
        writeln('Найдено в ',i+1,' строке "',arr[i],'"');      
      end;
      
      
      
      writeln(t, arr[i]);
    end;
    
    close(t);
    
    arr := nil;
    if ok then c:='ok' else c:='совпадений небыло найдено!';
    writeln(c);
  end else writeln('Создайте и заполните файл текстом на диске D, с именем СиАСОД.txt !');
  
end.
from dark to light)

Последний раз редактировалось Алексей_2012; 24.12.2019 в 13:27.
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести строку и слово. Вставить введенное слово перед самым длинным словом в строке.(программа на си) Кристина1998 Общие вопросы C/C++ 1 20.11.2016 11:15
Ввести строку и слово. Вставить введенное слово перед самым длинным словом в строке.(программа на си) Кристина1998 Помощь студентам 20 07.11.2016 23:39
Выводит на экран введенное слово с клавиатуры!! Sbobukh Помощь студентам 1 24.11.2013 16:35
Заменить в строке одно слово на другое, заданное с клавиатуры. trum Помощь студентам 5 05.04.2012 17:48
Заменить заданное слово в тексте, находящемся в заданном файле, на другое слово (С++) Lapochka Помощь студентам 6 01.12.2011 14:05