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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2019, 03:11   #1
Moonbeater
Новичок
Джуниор
 
Регистрация: 22.12.2019
Сообщений: 1
По умолчанию Вставка слов из одного текстового файла в другой (Паскаль).

Даны 2 текстовых файла (f1 и f2). В f1 написан рандомный текст (н-р "Сегодня я вышел из дома."), а в f2 слово, которое есть в первом (вышел). Через пробел или запятую от него написано какое-либо слово, например "вылетел".

Вопрос: как заставить программу найти нужное слово в f1 по первому слову из f2 и заменить на стоящее через пробел? Т.е. должно получиться "Сегодня я вылетел из дома."

Нужны лишь необходимые команды, часть кода или же принцип.
Хочу вскипятить хлеб
Moonbeater вне форума Ответить с цитированием
Старый 22.12.2019, 11:57   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

1.Считать в строковые переменные первый и второй файлы.
2.Найти во второй строке разделитель (пробел или ,)
3.Функцией Pos найти в первой строке то, что лежит во второй от начала до разделителя.
4.Процедурой Delete удалить от найденной в п.3 нужное число символов.
5.Процедурой Insert вставить нужное число символов из остатка второй строки - от разделителя до конца.
digitalis вне форума Ответить с цитированием
Старый 22.12.2019, 12:19   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Добавлю:
Открыть оба файла на чтение.
...

...
Открыть первый файл на запись.
Записать новую строку.
Не забыть закрыть этот файл.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.12.2019, 12:51   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Ну это я подразумевал по умолчанию. "Чтобы съесть арбуз, для начала его надо разрезать"© из инструкции
Цитата:
заменить на стоящее через пробел?
Об записать обратно - речи не было Было в заглавии.
Да что мы всё - советы, советы... Придёт Неверов с готовым кодом, он любит тупых недоученных лентяев.

Последний раз редактировалось digitalis; 22.12.2019 в 12:59.
digitalis вне форума Ответить с цитированием
Старый 22.12.2019, 13:37   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

digitalis
Цитата:
Да что мы всё - советы, советы... Придёт Неверов с готовым кодом, он любит тупых недоученных лентяев.
Оглянись. Он у тебя за спиной.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.12.2019, 10:03   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
function FileSizes(f: text): integer;
var
  i: integer;
  s: string;
begin
  reset(F);
  i := 0;
  while not eof(f) do
  begin
    readln(f, s);
    inc(i);
  end;
  
  Result := i;
end;



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



var
  f, f2: text;
  s, s1: string;
  slovo, zamena: string;
  arr: array of string;
  ok:boolean;
  i: integer;
  n: integer;

begin
  
  writeln('Укажите полные имя, путь, тип и расширение для файла с текстом (Пример: D:\1.txt)');
  readln(s);
  writeln('Укажите полные имя, путь, тип и расширение для файла со словами для замены/поиска (Пример: D:\2.txt)');
  readln(s1);
  writeln('Слова в файле должны бить написаны через запятую и пробел (Пример: СловоДляпПоиска, СловоНаКОтороеМенять)');

  
  assign(f, s);
  
  if not FileExists(s) and not FileExists(s1) then writeln('Файлы отсутствуют, создайте текстовые файлы 1 и 2 и запустите программу!') else
  begin
    setlength(arr, FileSizes(f));
    
    assign(f2, s1);
    
    reset(f2);
    readln(f2, s1);
    close(f2);
    
    n := pos(',', s1);
    
    slovo := copy(s1, 1, n - 1);
    zamena := copy(s1, n + 2, length(s1) - n);
    
    writeln(zamena);
    
    i := 0;
    
    reset(f);
    
    while not eof(f) do
    begin
      arr[i] := Parsre_F(f);
      inc(i);
    end;
    
    close(f);
    
    
    
    rewrite(f);
    ok := false;
    for i := 0 to Length(arr) - 1 do
    begin
      
          
      n := pos(slovo, arr[i]);
      
      if (n <> 0) then 
      begin
        ok := true;
        delete(arr[i], n, length(slovo));
        Insert(zamena, arr[i], n);
        writeln('Найдено в ', i + 1, ' строке "', arr[i], '", вместо слова: "',slovo,'"');      
      end;
           
      
      writeln(f, arr[i]);
    end;
       
    
    
    arr := nil;
    close(f);
 
   if ok then slovo:='ok' else slovo:='совпадений небыло найдено!';
    writeln(slovo);
 
 end;
  
end.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос строк из одного текстового файла в другой Dgrey Помощь студентам 19 02.05.2013 20:27
копирование текста из одного текстового файла в другой Miserable_Silence Помощь студентам 0 24.01.2013 15:52
Как правильно скопировать данные с одного текстового файла в другой? Dem80 Общие вопросы C/C++ 2 06.03.2009 22:17
из одного текстового файла виделить цифры и поместить в другой(пустой) файл serguna005 Паскаль, Turbo Pascal, PascalABC.NET 2 07.12.2008 20:55