Сложить дни летних месяцев
Дано 12 фактов. Необходимо найти сумму летних дней (92 должно получится)
месяц(1,январь,31).
месяц(2,февраль,29).
месяц(3,март,31).
месяц(4,апрель,30).
месяц(5,май,31).
месяц(6,июнь,30).
месяц(7,июль,31).
месяц(8,август,31).
месяц(9,сентябрь,30).
месяц(10,октябрь,31).
месяц(11,ноябрь,30).
месяц(12,декабрь,31).
symSummer():-месяц(X,Y,Z), X>=6, X<=8, Z= Z+Z+Z, write(Z),nl, fail;
true.
Что я делаю не так ?
Ответы (1 шт):
Автор решения: rotabor
→ Ссылка
Первая программа, которая заработала:
main:-
listDays(6,8),
halt.
месяц(1,январь,31).
месяц(2,февраль,29).
месяц(3,март,31).
месяц(4,апрель,30).
месяц(5,май,31).
месяц(6,июнь,30).
месяц(7,июль,31).
месяц(8,август,31).
месяц(9,сентябрь,30).
месяц(10,октябрь,31).
месяц(11,ноябрь,30).
месяц(12,декабрь,31).
listDays(L,H):-L=:=H,месяц(L,_,Y),write(Y),nl.
listDays(L,H):-L<H,месяц(L,_,Y),write(Y),nl,X is L + 1,listDays(X,H).
:-main.
-->
30
31
31
Работаю дальше. Прорвёмся.
OnlineGDB -это просто сайт, программы по этой ссылке нет.
И вот требуемый результат:
main:-
sumDays(6,8,0),
halt.
месяц(1,январь,31).
месяц(2,февраль,29).
месяц(3,март,31).
месяц(4,апрель,30).
месяц(5,май,31).
месяц(6,июнь,30).
месяц(7,июль,31).
месяц(8,август,31).
месяц(9,сентябрь,30).
месяц(10,октябрь,31).
месяц(11,ноябрь,30).
месяц(12,декабрь,31).
sumDays(L,H,S):-L>H,месяц(L,_,Y),T is S+Y,X is L-1,sumDays(X,H,T).
sumDays(L,H,S):-L<H,месяц(L,_,Y),T is S+Y,X is L+1,sumDays(X,H,T).
sumDays(L,H,S):-L=:=H,месяц(L,_,Y),T is S+Y,write(T),nl.
:-main.
-->
92