Нахождение в текстовом файле строк, в которых есть некоторое ключевое слово - Prolog
Формулировка задачи:
Помогите мне пожалуйста.
Нахождение в текстовом файле строк, в которых есть некоторое ключевое слово.
Решение задачи: «Нахождение в текстовом файле строк, в которых есть некоторое ключевое слово»
textual
Листинг программы
DOMAINS
list_string = string*
file = myfile
PREDICATES
nondeterm result
nondeterm work_file(string,list_string)
nondeterm make_list(string,char,list_string)
nondeterm read_list(list_string)
nondeterm find_words(string,list_string)
save_to_file(string,list_string)
transform(char,char)
write_list(list_string)
CLAUSES
work_file(Namefile,List):-
nl,
write(" Create a file? (Y / N) "), nl,
write(" By default, the processing of strings will be performed in an already created file "), nl,
readchar(C),
make_list(Namefile,C,List).
make_list(Namefile,C,List):-
transform(C,C1),
C1 = 'y',
write(" Enter a list of strings: "), nl,
read_list(List),
save_to_file(Namefile,List),!.
make_list(Namefile,_,List):-
existfile(Namefile),
openread(myfile,Namefile),
readdevice(myfile),
read_list(List),
readdevice(keyboard),
closefile(myfile);
write(" The file does not exist. It is recommended to create it. "), nl,
make_list(Namefile,'y',List).
write_list([]).
write_list([H|T]):-
write(H),nl,
write_list(T).
transform('Y','y').
transform('y','y').
read_list([H|T]):-
readln(H),
H <> "",
read_list(T).
read_list([]).
save_to_file(Name,List):-
openwrite(myfile,Name),
writedevice(myfile),
write_list(List),nl,
writedevice(screen),
closefile(myfile).
find_words("",[]).
find_words(Str,[Word|T]):-
fronttoken(Str,Word,Ost_str),
frontchar(Word,C,Ost),
find_words(Ost_str,T).
find_words(Str,T):-
fronttoken(Str,_,Ost),
find_words(Ost,T).
result:-
write(" Find strings in a text file that have a certain keyword. "), nl,
work_file("FILE_6.txt",List1),
write(" Strings before processing: "), nl,
write_list(List1),nl,
readchar(_),
write("Enter the keyword: "),
readln(Str),nl,
write(" Strings after processing: "), nl,
readchar(_),!.
GOAL
result.