Программа не работает, помогите исправить - Prolog
Формулировка задачи:
Листинг программы
- DOMAINS
- nazv = String
- izmer= Integer
- file=f
- DATABASE
- geogr(nazv,izmer)
- PREDICATES
- nondeterm m(char)
- nondeterm menu
- output_i_n(izmer)
- output_n_i(nazv)
- CLAUSES
- geogr("Russia",500).
- geogr("Tashkent",200).
- geogr("Lena",600).
- geogr("Irtish",750).
- geogr("Ob",100).
- geogr("Pol'sha",120).
- geogr("Kama",170).
- menu:-
- write("1 - ishem izmer po nazv "),nl,
- write("2 - ishem nazv po izmer "),nl,
- write("3 - dobavlenie infi "),nl,
- write("4 - izmenenie punkta "),nl,
- write("5 - udalenie zapisi "),nl,
- write("6 - vsy baza "),nl,
- write("7 - limit "),nl,
- write("0 - vihod "),nl,
- readchar(C),
- m(C).
- m('1'):-
- write("vvedi nazv "), nl,
- readln(Nazv),
- output_n_i(Nazv),
- menu.
- m('2'):-
- write("vvedi izmer "),nl,
- readint (Izmer),
- output_i_n(Izmer),
- menu.
- m('3'):-!,
- write("vvedi nazv "),nl,
- readln(Nazv),
- write("vvedi izmer "),nl,
- readint (Izmer),
- assert(geogr(Nazv,Izmer)),
- menu.
- m('4'):-!,
- write("vvedi nazv "),nl,
- readln(Nazv),
- write("vvedi nov izmer "),nl,
- readint (Izmer),
- retract(geogr(Nazv,_)),
- assert(geogr(Nazv,Izmer)),
- menu.
- m('5'):-!,
- write("udalyem nazv "), nl,
- readln(Nazv),
- retractall(geogr(Nazv,_)),
- menu.
- m('6'):-
- geogr(Nazv, Izmer),
- write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
- fail,menu.
- m('7'):-
- write("vvedi limit izmer "),nl,
- readln(Limit),
- geogr(Nazv, Izmer),
- Izmer <=Limit,
- write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
- fail,menu.
- m('0'):-!,
- save("avia.ddb"),
- retractall(_).
- m(_):-!,menu.
- output_i_n(Limit):-
- geogr(Nazv, Izmer),
- Izmer <=Limit,
- write("nazv : ",Nazv," izmer=",Izmer),nl,
- fail.
- output_i_n(Limit):-
- geogr(Nazv, Izmer),
- Izmer > Limit,!.
- output_i_n( Izmer):-
- write("ne hvatit "),nl,fail.
- output_i_n(Limit):-
- geogr(Nazv,_),!.
- output_i_n(_):-
- write("net infi o takoi strane(reke)"),nl,
- fail.
- output_n_i(Nazv):-
- geogr(Nazv, Izmer),
- write("nazv: ",Nazv," Izmer ",Izmer),nl,
- fail.
- output_n_i(Nazv):-
- geogr(Nazv,_),!.
- output_n_i(_):-
- write("net infi o strane "),nl,
- fail.
- GOAL
- menu.
Проблема кроется вот в этих строках !
Листинг программы
- output_i_n(Limit):-
- geogr(Nazv, Izmer),
- Izmer > Limit,!.
- output_i_n( Izmer):-
- write("ne hvatit "),nl,fail.
- output_i_n(Limit):-
- geogr(Nazv,_),!.
- output_i_n(_):-
- write("net infi o takoi strane(reke)"),nl,
- fail.
- m('7'):-
- write("vvedi limit izmer "),nl,
- readln(Limit),
- geogr(Nazv, Izmer),
- Izmer <=Limit,
- write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
- fail,menu.
Решение задачи: «Программа не работает, помогите исправить»
textual
Листинг программы
- readln(X) ; readln (Y) ; readln Z.
Объяснение кода листинга программы
- Сначала программа запрашивает у пользователя ввод трех значений с помощью функции readln:
- X (первое значение)
- Y (второе значение)
- Z (третье значение) Пример использования: ?- readln(X), readln(Y), readln(Z). X = '1', Y = '2', Z = '3'. Это означает, что программа сначала запрашивает у пользователя ввести значение X, затем значение Y и, наконец, значение Z. Значения сохраняются в соответствующих переменных X, Y и Z.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д