Помощь - Поиск - Пользователи - Календарь
Полная версия: Поиск слов с окончаниями
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zloy student
Найти слова из текстового файла с окончаниями -онок и -енок и вывести их на экран.Как искать слова по их началу я знаю, а вот как наоборот? Наработки приводить не буду т.к. вам этот бред скорее всего не пригодиться. Заранее спасибо!
virt
pos('енок',s)
Zloy student
Код
uses crt;
var s:string;
   i,n,nah:integer;
begin
clrscr;
write('write text ';
readln(s);
n:=Length(s);
nah:=1;
for i:=1 to n do begin
if (s[i+1]=' ' or (i=n) then begin
if (copy(s,i-3,4)='онок' or  (copy(s,i-3,4)='енок'  then writeln(copy(s,nah,i-nah+1));
if s[i+2]<>' ' then nah:=i+2;
end;
end;
readln;
end.

Вот еще вариант но тут ввод строки. Как заменить на поиск из файла?
Ozzя

...
var F: Text;
...

Assign(F, 'name.txt);
ReSet(F);
...
While not EOF(F) do
begin
ReadLn(F, S);
...
end;
...
Close(F);
...
volvo
Цитата
Вот еще вариант но тут ввод строки.

А ты этот "вариант" откомпилировать пробовал?
Zloy student
Код
program a;
var f : text;
s:string;
i,n,nah:integer;
begin
assign (f,'file.txt');
reset (f);
while not eof (f) do begin
n:=length(s);
nah:=1;
for i:=1 to n do begin
if (s[i+1]=' ' or i=n) then begin
if ((copy (s,i-3,4)='onok') or (copy(s,,i-3,4)='enok') then
writeln (copy(s,nah,i-nah+1));
if s[i+2]<>' ' then nah:=i+2;
end;
end;
readln;
end.

if (s[i+1]=' ' or i=n ) then begin - тут выдается ошибка о несовпадении типов.Что не так?
Ozzя
(s[i+1]=' ') or (i=n)

Условия, разделяемые or/and/xor всегда должны заключаться в скобки.
volvo
Zloy student, я про это и говорил yes2.gif
Приоритеты надо расставлять (скобками):
for i:=1 to n do begin
if (s[i+1]=' ') or (i=n) then begin
if (copy(s,i-3,4)='onok') or (copy(s,i-3,4)='enok') then
writeln (copy(s,nah,i-nah+1));
if s[i+2]<>' ' then nah:=i+2;
end;
end;
Ozzя
Zloy student
Ты забыл вставить
ReadLn(F, S);
У тебя из файла строки НЕ читаются yes2.gif
Zloy student
Спосибо! У меня еще вопрос. Что нужно поменять, чтобы выводились слова содержащие заглавные буквы?
Ozzя
...
if s[i] in ['А'..'Я'] then {Заглавная буква есть!}
Zloy student
Тогда выводятся слова кончающиеся на заглавную.
volvo
Zloy student,
...
if (copy(StrUpper(s),i-3,4)=StrUpper('onok')) or (copy(StrUpper(s),i-3,4)=StrUpper('enok')) then
writeln (copy(s,nah,i-nah+1));
...

Реализация StrUpper - здесь: Модуль для работы со строками
Zloy student
А попроще никак нельзя? мне не поверят что это я писал smile.gif
Zloy student
Нужно выводить слова содержащие заглавную букву!
volvo
Ну что за народ... Мало того, что даешь решение, так еще и попроще подавай nea.gif
Тогда делай сам, чтобы поверили, что это ты делал... Хотя я вообще не понимаю, что, твоя программа НЕ выведет слово

Lisenok
?

Тогда объясни, ЧТО ИМЕННО этому помешает?
Zloy student
Вот блин! Мне надо понятней выражаться. Забейте на окончания. Задание у меня такое: вывести из файла слова содержащие заглавную букву. Не создаю другую тему потому что задания похожие.Что в этой программе нужно поменять?
volvo
Правила прочти ВНИМАТЕЛЬНО !!! Свалку не надо из темы делать...
Сформулируй задачу как положено и создай новую тему...

Закрыто
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.