Вывести строку с введенным словм - 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.
Объяснение кода листинга программы
- const rz=[' ',',','.','?','!']; {разделители слов}
- var f:text;
- i,p:byte;
- name,s,sl,s2:string;
- name:='file.txt';
- assign(f,name);
- reset(f);
- writeln('Введите слово для поиска в файле ',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))) {и за ним разделитель
- or оно последнее в строке}
- then s2:=s; end;
- close(f);
- if s2<>'' then Writeln(s)
- else Writeln('Введённое Вами слово не встречается ни в одной строке файла');
- readln
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д