Создать список, элементами которого являются 2^n - Prolog

Узнай цену своей работы

Формулировка задачи:

Создать список, элементами которого являются 2^n,n!, члены последовательности Фибоначчи

Решение задачи: «Создать список, элементами которого являются 2^n»

textual
Листинг программы
  1. domains
  2. num_train=string /*nomer poezda*/
  3. destination=string /*punkt naznacheniya*/
  4. departure_hour=integer/*vremya otpravleniya_chas*/
  5. departure_min=integer /*vremya otpravlenya_min*/
  6. arrival=string /*vremya pribytiya*/
  7.  
  8. database
  9. train(num_train,destination,departure_hour,departure_min,arrival)
  10. trainNeed(num_train,destination,departure_hour,departure_min,arrival)
  11.  
  12. predicates
  13. menu
  14. open_base(string) /*otkritie basy*/
  15. case(char)
  16. print_base /*vivod basy na ekran*/
  17. trainToMoscow(integer,integer) /*poezd do Moscvy po zadaniu*/
  18. checkTime(integer,integer,integer,integer) /*proverka vremeni*/
  19. compare(integer,integer,integer,integer) /*sravnenie vremeni*/
  20. taskTrain
  21.  
  22. goal
  23. clearwindow,
  24. write("Enter the name of base:"),nl,
  25. readln(FileName),
  26. open_base(FileName),
  27. menu,
  28. save(FileName),
  29. retractall(_).
  30.  
  31. clauses
  32. open_base(FileName):-
  33. existfile(FileName),
  34. consult(FileName).
  35. open_base(_).
  36.  
  37. menu:-
  38. clearwindow,
  39. write("1 - Show time table\n2 - Enter new record\n3 - Delete record\n4 - Task\n0 - Exit\n\n"),
  40. readchar(Item),
  41. case(Item).
  42.  
  43. case('1'):- /*vivod basy na ekran*/
  44. clearwindow,
  45. print_base,
  46. readchar(_),
  47. menu.
  48.  
  49. case('2'):- /*dobavlenie novoy zapisi*/
  50. clearwindow,
  51. write("Number of train:"),nl,
  52. readln(Numb),
  53. write("Destination:"),nl,
  54. readln(Dest),
  55. write("Departure (hour):"),nl,
  56. readint(DepHour),nl,
  57. write("Departure (min):"),nl,
  58. readint(DepMin),nl,
  59. write("Arrival time (hour:min):"),nl,
  60. readln(Arriv),nl,
  61. assertz(train(Numb,Dest,DepHour,DepMin,Arriv)),
  62. menu.
  63.  
  64. case('3'):- /*udalenie poezda po nomeru*/
  65. clearwindow,
  66. write("Enter number of train:"),nl,
  67. readln(DelNumb),
  68. retract(train(DelNumb,_,_,_,_)),
  69. menu.
  70.  
  71. case('4'):- /*zadanieoisk blizhaishego poezda do moskvy*/
  72. clearwindow,
  73. write("Enter hour of departure"),nl,
  74. readint(TimeHour),nl,
  75. write("Enter minute of departure"),nl,
  76. readint(TimeMin),nl,
  77. trainToMoscow(TimeHour,TimeMin),
  78. taskTrain,
  79. retractall(trainNeed(_,_,_,_,_)),
  80. readchar(_),
  81. menu.
  82.  
  83. case('0').
  84. case(_):-
  85. menu.
  86.  
  87. print_base:-
  88. train(Numb,Dest,DepHour,DepMin,Arriv),
  89. write(Numb," | ",Dest," | ",DepHour,":",DepMin," | ",Arriv),nl,
  90. fail.
  91. print_base.
  92.  
  93. trainToMoscow(TimeHour,TimeMin):-
  94. train(Numb,Dest,DepHour,DepMin,Arriv),
  95. Dest="Moscow",
  96. checkTime(DepHour,DepMin,TimeHour,TimeMin),
  97. assertz(trainNeed(Numb,Dest,DepHour,DepMin,Arriv)),
  98. fail.
  99. trainToMoscow(_,_).
  100.  
  101. checkTime(DepHour,DepMin,TimeHour,TimeMin):-
  102. X=DepHour+6,
  103. compare(DepHour,DepMin,X,TimeMin),
  104. compare(TimeHour,TimeMin,DepHour,DepMin),!.
  105. checkTime(DepHour,DepMin,TimeHour,TimeMin):-
  106. X=TimeHour+6,
  107. Y=DepHour+24,
  108. compare(Y,DepMin,X,TimeMin),
  109. compare(TimeHour,TimeMin,Y,DepMin),!.
  110. compare(T1,_,T2,_):-
  111. T1<T2.
  112. compare(T1,M1,T2,M2):-
  113. T1=T2,M1<=M2.
  114.  
  115. taskTrain:-
  116. trainNeed(Numb,Dest,DepHour,DepMin,Arriv),
  117. write(Numb," | ",Dest," | ",DepHour,":",DepMin," | ",Arriv),nl,
  118. fail.
  119. taskTrain.

Объяснение кода листинга программы

В коде используется язык программирования Prolog. Задача заключается в создании списка, содержащего элементы 2^n. Переменные:

  • num_train (строка) - номер поезда
  • destination (строка) - пункт назначения
  • departure_hour (целое число) - время отправления
  • departure_min (целое число) - минуты отправления
  • arrival (строка) - время прибытия База данных содержит факты, описывающие расписание поездов:
  • train(num_train,destination,departure_hour,departure_min,arrival)
  • trainNeed(num_train,destination,departure_hour,departure_min,arrival) В коде определены следующие предикаты:
  • open_base(string) - открытие базы данных
  • case(char) - обработка ввода пользователя
  • print_base - вывод содержимого базы данных
  • trainToMoscow(integer,integer) - поиск ближайшего поезда до Москвы
  • checkTime(integer,integer,integer,integer) - проверка времени отправления и прибытия
  • compare(integer,integer,integer,integer) - сравнение времени Клаузы базы данных:
  • open_base(FileName):- existfile(FileName), consult(FileName).
  • menu:- clearwindow, write(1 - Show time table\n2 - Enter new record\n3 - Delete record\n4 - Task\n0 - Exit\n\n), readchar(Item), case(Item).
  • case('1'):- clearwindow, printbase, readchar(), menu.
  • case('2'):- clearwindow, write(Number of train:),nl, readln(Numb), write(Destination:),nl, readln(Dest), write(Departure (hour):),nl, readint(DepHour),nl, write(Departure (min):),nl, readint(DepMin),nl, write(Arrival time (hour:min):),nl, readln(Arriv),nl, assertz(train(Numb,Dest,DepHour,DepMin,Arriv)), menu.
  • case('3'):- clearwindow, write(Enter number of train:),nl, readln(DelNumb), retract(train(DelNumb,,,,)), menu.
  • case('4'):- clearwindow, write(Enter hour of departure),nl, readint(TimeHour),nl, write(Enter minute of departure),nl, trainToMoscow(TimeHour,TimeMin), taskTrain, retractall(trainNeed(,,,,)), readchar(), menu.
  • case('0'):- menu.
  • case(_):- menu.
  • print_base:- train(Numb,Dest,DepHour,DepMin,Arriv), write(Numb,|,Dest,|,DepHour,:,DepMin,|,Arriv),nl, fail.
  • print_base.
  • trainToMoscow(TimeHour,TimeMin):- train(Numb,Dest,DepHour,DepMin,Arriv), Dest=Moscow, checkTime(DepHour,DepMin,TimeHour,TimeMin), assertz(trainNeed(Numb,Dest,DepHour,DepMin,Arriv)), fail.
  • trainToMoscow(,).
  • checkTime(DepHour,DepMin,TimeHour,TimeMin):- X=DepHour+6, compare(DepHour,DepMin,X,TimeMin), compare(TimeHour,TimeMin,DepHour,DepMin),!.
  • checkTime(DepHour,DepMin,TimeHour,TimeMin):- X=TimeHour+6, Y=DepHour+24, compare(Y,DepMin,X,TimeMin), compare(TimeHour,TimeMin,Y,DepMin),!.
  • compare(T1,,T2,):- T1<T2.
  • compare(T1,M1,T2,M2):- T1=T2, M1<=M2.
  • taskTrain:- trainNeed(Numb,Dest,DepHour,DepMin,Arriv), write(Numb,|,Dest,|,DepHour,:,DepMin,|,Arriv),nl, fail.
  • taskTrain.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы