Показать сообщение отдельно
Старый 05.04.2019, 10:31   #7 (permalink)
Maria_Meri
Новичок
 
Регистрация: 31.03.2019
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

подскажите, что я сделала не так? Или я не так поняла Вашу мысль? Потому что я создала еще file of integer и начала к нему перекатывать символы.
Код:
Uses crt;

type
  matr = array[1..5] of integer;
  tFile = file of integer;

procedure show(var f: text);
var
  s: string;
begin
  Assign(f, 'input.txt');
  reset(f);
  while not eof(f) do
  begin
    readln(f, s);
    writeln(s);
  end;
  Close(f);
end;

procedure input(var a: matr; var delword: string; var L: integer);
var
  i: integer;
begin
  writeln('Enter delword:');
  readln(delword);
  L := Length(delword);
  for i := 1 to length(delword) do a[i] := ord(delword[i]);
end;

procedure transfer(var f: text; var f3: tFile);
var
  s: string; i, k: integer;
begin
  reset(f);
  assign(f3, 'ascii');
  rewrite(f3);
  while not eof(f) do
  begin
    readln(f, s);
    for i := 1 to length(s) do
    begin
      k := ord(s[i]);
      write(f3, k);
    end;
  end;
  close(f);
  close(f3);
end;

//подскажите, где я не так поняла Вашу мысль
procedure preprocess(var f3: tFile; var f4: tFile);
var
  k: integer;
begin
  reset(f3);
  assign(f4, 'preoutput');
  rewrite(f4);
  while not eof(f3) do 
  begin
    repeat
      read(f3, k);
      write(f4, k);
    until (k = 32) or eof(f3);
    if not eof(f3) then writeln(f3);
  end;
  close(f3);
  close(f4);
end;

procedure process(var f4: tFile; var f2: text; a: matr; L: integer);
var
  k, i, p, time, count: integer;
  flag, flag1, flag2: boolean;
  b: array[1..30] of integer;
begin
  writeln('Enter time:');
  readln(time);
  count := 0;
  reset(f4);
  Assign(f2, 'output.txt');
  rewrite(f2);
  while not eof(f4) do
  begin
    p := 0;
    repeat
      inc(p);
      read(f4, k);
      b[p] := k;
    until (k = 10) or eof(f4);
    if k = 10 then dec(p);
    if p = L then
    begin
      i := 0;
      flag2 := true;
      repeat
        inc(i);
        flag1 := b[i] = a[i];
      until (flag1 = false) or (i = L);
      if flag1 then
      begin
        inc(count);
        if count mod time = 0 then flag2 := false;
      end;
      flag := flag2;
    end else flag := true;
    if flag then
    begin
      for i := 1 to p do write(f2, chr(b[i]));
      writeln(f2);
      for i := 1 to p do write(chr(b[i]));
      writeln;
    end;
  end;
  Readln;
  close(f2);
  close(f4);
end;


var
  f, f2: text;
  f3, f4: tFile;
  delword: string;
  a: matr;
  time, L: integer;

begin
  clrscr;
  show(f);
  input(a, delword, L);
  transfer(f, f3);
  preprocess(f3, f4);
  process(f4, f2, a, L);
end.
Для пример я взяла такой файл. Я добавила знаки препинания, но думаю, что если вводимое слово не будет стоять рядом с (, . ? !), то все будет нормально
Код:
one five, six, please! 
two seven? No, it can do it.
one eight! Thank you very much.
three read.
one
four
Maria_Meri вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070