Вывести строку с введенным словм - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, нужна ваша помощь. Имеется задача: Дан текст, хранящийся в текстовом файле. Вводится слово. Если введенное слово имеется в тексте, то вывести строку. Вот мой код:
Но он не работает, я так понимаю, что условием что-то не так. Заранее благодарен

Решение задачи: «Вывести строку с введенным словм»

textual
Листинг программы
const rz=[' ',',','.','?','!'];{разделители слов}
var f:text;
    i,p:byte;
    name,s,sl,s2:string;
begin
name:='file.txt';
assign(f,name);
reset(f);
writeln('Введите слово для пoиска в файле ',name);
readln(sl);
s2:='';
while not eof(f)and(s2='') do
 begin
  readln(f,s);
  p:=pos(sl,s);{первое вхождение сочетания букв слова в строке}
  if (p>0)and((p=1)or(s[p-1] in rz)){если есть и оно первое или перед ним разделитель}
  and((s[p+length(sl)] in rz)or(p+length(sl)>length(s))) {и за ним разделитель
                                                          или оно последнее в строке}
  then s2:=s;
 end;
close(f);
if s2<>'' then Writeln(s)
else Writeln('Введенное Вами слово не встречается ни в одной строке файла');
readln
end.

Объяснение кода листинга программы

  1. const rz=[' ',',','.','?','!']; {разделители слов}
  2. var f:text;
  3. i,p:byte;
  4. name,s,sl,s2:string;
  5. name:='file.txt';
  6. assign(f,name);
  7. reset(f);
  8. writeln('Введите слово для поиска в файле ',name);
  9. readln(sl);
  10. s2:='';
  11. while not eof(f)and(s2='') do begin
    1. readln(f,s);
    2. p:=pos(sl,s);{первое вхождение сочетания букв слова в строке}
    3. if (p>0)and((p=1)or(s[p-1] in rz)){если есть и оно первое или перед ним разделитель}
    4. and((s[p+length(sl)] in rz)or(p+length(sl)>length(s))) {и за ним разделитель
      1.                                                     or оно последнее в строке}
    5. then s2:=s; end;
  12. close(f);
  13. if s2<>'' then Writeln(s)
  14. else Writeln('Введённое Вами слово не встречается ни в одной строке файла');
  15. readln
  16. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы