Другие языки программирования и технологии
Нужна помощь по языку программирования PROLOG
На языке PROLOG написать программу. Условие: Вывести на экран серию из символов "/\" (две косых черты, соответственно, на каждый такой "пик" уходит два символа), количество которых задает пользователь. Буду очень признательна за помощь.
Текст программы:
domains /*Razdel opisania tipov dannix*/
N=integer.
predicates /*Razdel opisania predikatov*/
povtor(N) /*Odnomestnii predicat*/
clauses /*Razdel faktov i pravil*/
povtor(0):-!. /*Yslovie okonchania rekyrsii*/
povtor(N):-write("/| "),N1=N-1,povtor(N1). /*Rekyrsivnoe pravilo*/
goal /*Vnytren. cel*/
write("Vvedite kolichestvo /| "),readint(X),povtor(X),nl,
write("Dlia vixoda nagmite lub. klav."),readchar(_).
Результат работы программы:

domains /*Razdel opisania tipov dannix*/
N=integer.
predicates /*Razdel opisania predikatov*/
povtor(N) /*Odnomestnii predicat*/
clauses /*Razdel faktov i pravil*/
povtor(0):-!. /*Yslovie okonchania rekyrsii*/
povtor(N):-write("/| "),N1=N-1,povtor(N1). /*Rekyrsivnoe pravilo*/
goal /*Vnytren. cel*/
write("Vvedite kolichestvo /| "),readint(X),povtor(X),nl,
write("Dlia vixoda nagmite lub. klav."),readchar(_).
Результат работы программы:

Колян Вялов
спасибо, только выдает ошибку, что где-то пропущены кавычки. а где, не понимаю :(
Какая-то плохая задача для пролога, она слишком процедурная.
Вот мой взгляд на задачу на диалекте swi-prolog:
%**
%* Предикат sawtooth_sequence(Sequence, Length):
%* Sequence есть список символов, представляющий Length зубцов.
%**
% База рекурсивного определения: 0 зубцов представляет пустой список.
sawtooth_sequence(Sequence, Length)
:- Length is 0, Sequence = [].
% Рекурсия: Sequence есть список символов, представляющий Length зубцов, при
% числе Length зубцов больше нуля, если в начале Sequence есть зубец
% (символы "/\" [47, 92]), а оставшаяся часть ---SequenceTail суть
% список, представляющий Length-1 зубец.
sawtooth_sequence(Sequence, Length)
:- Length > 0, TailLength is Length-1,
sawtooth_sequence(SequenceTail, TailLength),
Sequence = [47, 92 | SequenceTail].
%**
%* string_println(String):
%* Посимвольная печать строки.
%**
% Для пустой строки необходиво вывести символ перевода строки \n (ASCII 10).
string_println(String)
:- String = [], put(10).
% Если строка содержит в начале символ, то нужно вывести первый символ строки,
% а затем напечатать ее конец.
string_println(String)
:- String = [Char | StringEnd], put(Char),
string_println(StringEnd).
%**
%* main: Запрашивает у пользователя число зубцов, потом строит
%* с помощью предиката sawtooth_sequence последовательность зубцов,
%* А затем выводит ее на экран.
%**
main
:- string_println("Введите число зубцов"),
read(Length),
sawtooth_sequence(Sequence, Length),
string_println(Sequence).
Вот мой взгляд на задачу на диалекте swi-prolog:
%**
%* Предикат sawtooth_sequence(Sequence, Length):
%* Sequence есть список символов, представляющий Length зубцов.
%**
% База рекурсивного определения: 0 зубцов представляет пустой список.
sawtooth_sequence(Sequence, Length)
:- Length is 0, Sequence = [].
% Рекурсия: Sequence есть список символов, представляющий Length зубцов, при
% числе Length зубцов больше нуля, если в начале Sequence есть зубец
% (символы "/\" [47, 92]), а оставшаяся часть ---SequenceTail суть
% список, представляющий Length-1 зубец.
sawtooth_sequence(Sequence, Length)
:- Length > 0, TailLength is Length-1,
sawtooth_sequence(SequenceTail, TailLength),
Sequence = [47, 92 | SequenceTail].
%**
%* string_println(String):
%* Посимвольная печать строки.
%**
% Для пустой строки необходиво вывести символ перевода строки \n (ASCII 10).
string_println(String)
:- String = [], put(10).
% Если строка содержит в начале символ, то нужно вывести первый символ строки,
% а затем напечатать ее конец.
string_println(String)
:- String = [Char | StringEnd], put(Char),
string_println(StringEnd).
%**
%* main: Запрашивает у пользователя число зубцов, потом строит
%* с помощью предиката sawtooth_sequence последовательность зубцов,
%* А затем выводит ее на экран.
%**
main
:- string_println("Введите число зубцов"),
read(Length),
sawtooth_sequence(Sequence, Length),
string_println(Sequence).
Колян Вялов
Мне диалекты совсем незнакомы... Если Вам не сложно, напишите, пожалуйста.
Колян Вялов
*на просто прологе
Похожие вопросы
- Какие программы нужны, и какие языки программирования нужно знать для того..
- нужна помощь профи в программировании,и просто в ПК
- С помощью каких языков программирования делают 3d игры наподобие Far Cry, Assassin's Creed и т. д.?
- С помощью какого языка программирования можно быстрей всего вывести 100 разных (анимированных картанок
- Нужна помощь. На языке Си написать программку.
- Значит такой вопрос. Для чего нужен компилятор Free pascal. Не я понимаю что это язык программирования и...
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- *.bat файл, проверка наличия нужного языка программирования и необходимых библиотек.
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- Какие именно базовые знания нужны для того чтобы начать учить языки программирования?