Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
1

Turbo Prolog 2.0

18.09.2010, 15:44. Показов 2008. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Только начала изучать логическое программирование-пока очень сложно и не совсем понятно, а тут уже такие задания...(((
Помогите, пожалуйста,написать программку:
Нарисовать шахматную доску (8*8),если А=1(вводит пользователь) и шашечную доску (10*10), если А=2. Правый нижний угол -черный.

Заранее ОГРОМНОЕ СПАСИБО!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2010, 15:44
Ответы с готовыми решениями:

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog
DOMAINS l_i=integer* l_s=string* i=integer s=string c=char structura=str(i,s) %Структура...

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что...

Как переделать программу написанную на Turbo-Prolog в SWI-Prolog?
Ребята подскажите пожалуйста как переделать эту программу написанную на Turbo-Prolog в SWI-Prolog?...

В Turbo-Prolog есть возможность описать Goal. Как это реализовано в SWI-Prolog
Здравствуйте. в Turbo-Prolog есть возможность описать Goal: Goal father(X,_), write(X). И...

11
Заблокирован
18.09.2010, 17:10 2
попытки решить самостоятельно были?
0
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
19.09.2010, 13:28  [ТС] 3
Конечно были! Но...
Просто я пока не могу разобраться как описывать те или иные условия...
Но я над этим работаю!
Нужен совет!!!
0
Заблокирован
19.09.2010, 14:05 4
Смайлс
Цитата Сообщение от Смайлс Посмотреть сообщение
Нужен совет!!!
задавайте тогда конкретный вопрос, а не:
Цитата Сообщение от Смайлс Посмотреть сообщение
Помогите, пожалуйста,написать программку
0
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
19.09.2010, 14:26  [ТС] 5
Я пишу:
predicates
Prolog
1
2
3
4
5
6
7
8
9
10
shahmatnaya_doska(string,string)
 A(integer,integer)
 beloe(string)
 chernoe(string)
 pole(string)
clauses
 beloe (" ").
 chernoe("*").
 pole(X):-beloe(X).
 pole(X):-chernoe(X).
Теперь надо указать, что доска эта -8*8...не знаю как это описать...
В этой же программе надо описать и шашечную доску, которая 10*10
Наконец,надо ввести условие, которое позволяло бы следующее:
если пользователь вводит А=1, то ответ-шахматная доска (8*8)
если пользователь вводит А=2, то ответ-шашечная доска (10*10)

Здесь и начались трудности...
0
Заблокирован
19.09.2010, 15:14 6
Цитата Сообщение от Смайлс Посмотреть сообщение
если пользователь вводит А=1, то ответ-шахматная доска (8*8)
если пользователь вводит А=2, то ответ-шашечная доска (10*10)
Здесь и начались трудности...
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
predicates
    board(integer,integer)   
    selection
clauses 
    board(X,Y):-
        write("create board: "),
        write(X),
        write("x"),
        write(Y).
    selection:-
        write("1 - 8x8\n2 - 10x10\n"),
        readint(X),
        X=1, board(8,8).
    selection:-
        board(10,10).
goal
    selection.
можно так,но нет проверки на неправильный ввод(напимер ввел пользователь 3 и все равно достка 10х10) если нужна проверка то выбор доски надо вынести в отдельный предикат типа
Prolog
1
2
3
4
5
6
pred(X):-
X=1, board(8,8).
pred(X):-
X=2, board(10,10).
pred(_):-
write("error").
код не проверял
0
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
19.09.2010, 15:27  [ТС] 7
СПАСИБО ОГРОМНОЕ!!!!!
Потихоньку начинаю понимать...!!!!!
Вы меня очень выручили!!!
Еще раз СПАСИБО!!!!
1
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
24.09.2010, 07:16  [ТС] 8
Теперь мне необходимо написать эту же программу с помощью рекурсии, то есть нарисовать доску (8*8), если пользователь вводит А=1 и доску 10 на 10,если А=2. (моя программа рисует только по одной строке, в зависимости от четности/нечетности. Подскажите, пожалуйста, как указать, чтобы lines повторялись 8 или 10 раз?)
Я пишу:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
domains
A=integer
predicates
doska(A)
stroka(A)
result
clauses
stroka(1):-write("*_*_*_*_").
stroka(1):-write("_*_*_*_*").
stroka(A):-A>2,A mod 2=0,A1=A-2,stroka (A1)write("*_*_*_*_").
stroka(A):-A>1,A mod 2=1,A1=A-2,stroka (A1),write("_*_*_*_*").
 
stroka(2):-write("*_*_*_*_*_").
stroka(2):-write("_*_*_*_*_*").
stroka(A):-A>2,A mod 2=0,A1=A-2,stroka (A1)write("*_*_*_*_*_").
stroka(A):-A>1,A mod 2=1,A1=A-2,stroka (A1),write("_*_*_*_*_*").
 
result:-write("Vvedite chislo A""),
readint(A),A>0,
stroka(A).
goal
result.
0
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
24.09.2010, 13:06 9
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
predicates
stroka8(integer)
stroka10(integer)
board(integer)
result
clauses
stroka8(0):-!.
stroka8(A):-A mod 2=0,!,A1=A-1,stroka8(A1),write("*_*_*_*_"),nl.
stroka8(A):-A mod 2=1,A1=A-1,stroka8(A1),write("_*_*_*_*"),nl.
 
stroka10(0):-!.
stroka10(A):-A mod 2=0,!,A1=A-1,stroka10(A1),write("*_*_*_*_*_"),nl.
stroka10(A):-A mod 2=1,A1=A-1,stroka10(A1),write("_*_*_*_*_*"),nl.
 
board(8):-stroka8(8).
board(10):-stroka10(10).
 
result:-write("Vvedite chislo A: "),
readint(A),A>0,
board(A).
goal
result.
А так вообще любое число вводите
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
predicates
for(integer,integer,integer)
s(integer,integer,integer)
board(integer)
result
clauses
for(A,A,_).
for(I,A,B):-A<B,A1=A+1,for(I,A1,B).
 
s(_,J,J):-!,nl.
s(I,J,_):-A=I+J,A mod 2=0,!,write('*').
s(_,_,_):-write('_').
 
board(A):-A1=A-1,for(I,0,A1),for(J,0,A),s(I,J,A),fail.
 
result:-write("Vvedite chislo A: "),
readint(A),A>0,
board(A).
goal
result.
0
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
24.09.2010, 22:31  [ТС] 10
спасибо.
подскажите, пожалуйста, как расшифровывается запись:

stroka8(0): -!.
ИЛИ
stroka10(0): -!.
?
0
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
24.09.2010, 22:36 11
Если осталось вывести 0 строк, то завершаем работу предиката и ставим отсечение, чтобы не выполнялось следующее правило.
0
4 / 4 / 1
Регистрация: 18.09.2010
Сообщений: 13
25.09.2010, 16:15  [ТС] 12
Ясно!
Большое спасибо!!!!
0
25.09.2010, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2010, 16:15
Помогаю со студенческими работами здесь

Логическая задача на Turbo prolog или Gui prolog
Может у кого есть исходни на Prolog ЗЫ заранее спаисбо)

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 5.2 turbo prolog: ...

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn...

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru