SWI-PROLOG, прога выдает ошибки
Формулировка задачи:
Есть прога, нужно исправить ошибки/откомпилировать.
Листинг программы
- :-dynamic record/6.
- :- discontiguous process/1.
- record(1,'Хлеб','15 января 2017',20,22,'Хлебзавод №1').
- record(2,'Батон','14 января 2017',20,25,'Хлебзавод №2').
- record(3,'Чай Greenfield','01 января 2018',60,85,'Greenfield ltd').
- record(4,'Чай Lipton','01 июня 2018',40,60,'Lipton International').
- record(5,'Молоко','01 февраля 2017',60,65,'ЗАО Хладокомбинат').
- record(6,'Кефир','27 января 2017',30,50,'ЗАО Хладокомбинат').
- record(7,'Масло','04 февраля 2017',10,80,'ООО Экомилк').
- record(8,'Шоколад Milka','01 сентября 2017',75,65,'Kraft Foods Ltd').
- record(9,'Кофе Jakobs','1 июня 2018',40,60,'Kraft Foods Ltd').
- start:-
- write('--------------------------------------------'),nl,
- write('--------БД Магазина продуктов питания----------'),nl,
- write('--------------------------------------------'),nl,nl,menu.
- menu:-
- write('Введите номер 1..7'),nl,
- write('1. Добавить запись в БД'),nl,
- write('2. Удалить запись из БД'),nl,
- write('3. Поиск по ID'),nl,
- write('4. Просмотр всех записей'),nl,
- write('5. Поиск по производителю'),nl,
- write('6. Поиск по цене'),nl,
- write('7. Завершение работы'),nl,
- read(C),nl,
- process(C),!.
- process(1):-
- write('-----Добавление записи-----'),nl,nl,
- write('ID записи: '),
- read(ID),
- write('Наименование товара: '),
- read(NAME),
- write('Срок годности: '),
- read(SROK),
- write('Количество товара на складе: '),
- read(KOL),
- write('Цена за 1 шт.: '),
- read(PRICE),
- write('Производитель: '),
- read(PROIZV),
- assertz(record(ID,NAME,SROK,KOL,PRICE,PROIZV)),nl,nl,
- write('Запись добавленна!'),nl,nl,menu.
- process(2):-
- write('------Удаление записи------'),nl,nl,
- write('Введите ID записи: '),
- read(ID),
- A = record(ID,_,_,_,_,_,_,_),
- retractall(A),
- write('Запись удалена!'),nl,nl,nl,menu.
- process(3):-
- write('------Поиск по ID------'),nl,nl,
- write('Введите ID записи: '),nl,
- read(ID),nl,
- write('------------------'),
- record(ID,NAME,SROK,KOL,PRICE,PROIZV),
- nl,write(' ID: '),write(ID),
- nl,write(' Наименование товара: '),write(NAME),
- nl,write(' Срок годности: '),write(SROK),
- nl,write(' Количество товара на складе: '),write(KOL),
- nl,write(' Цена за 1 шт.: '),write(PRICE),
- nl,write(' Производитель: '),write(PROIZV),
- nl,write('------------------'),
- nl,nl,!,menu.
- process(4):-write('------Просмотр всех данных------'),nl,nl,
- record(ID,NAME,SROK,KOL,PRICE,PROIZV),
- nl,write(' ID: '),write(ID),
- nl,write(' Наименование товара: '),write(NAME),
- nl,write(' Срок годности: '),write(SROK),
- nl,write(' Количество товара на складе: '),write(KOL),
- nl,write(' Цена за 1 шт.: '),write(PRICE),
- nl,write(' Производитель: '),write(PROIZV),
- nl,write('------------------'),
- nl,nl,fail;
- menu.
- process(5):-
- write('------Поиск по Производителю------'),nl,nl,
- write('Поиск по производителю: '),nl,
- read(PROIZV),nl,
- write('------------------'),
- record(ID,NAME,SROK,KOL,PRICE,PROIZV),
- nl,write(' ID: '),write(ID),
- nl,write(' Наименование товара: '),write(NAME),
- nl,write(' срок годности: '),write(SROK),
- nl,write(' Количество товара на складе: '),write(KOL),
- nl,write(' Цена за 1 шт.: '),write(PRICE),
- nl,write(' Производитель: '),write(PROIZV),
- nl,write('------------------'),
- nl,nl,!,menu.
- process(6):-
- write('------Просмотр всех данных------'),nl,nl,
- write('Минимальная цена'),nl,
- read(MIN),nl,
- write('Максимальная цена'),nl,
- read(MAX),nl,
- record(ID,NAME,SROK,KOL,PRICE,PROIZV),
- PRICE>MIN, PRICE<MAX,
- nl,write(' ID: '),write(ID),
- nl,write(' Наименование товара: '),write(NAME),
- nl,write(' Срок годности: '),write(SROK),
- nl,write(' Количество товара на складе: '),write(KOL),
- nl,write(' Цена за 1 шт.: '),write(PRICE),
- nl,write(' Производитель: '),write(PROIZV),
- nl,write('------------------'),
- nl,nl,fail,menu.
- process(7):-
- write('Вы уверенны, что хотите завершить работу? (y/n)'),
- read(A),esc(A).
- esc(A):-
- A == 'y',halt.
- esc(A):-
- A == 'n',nl,start.
- process(C):-
- C<1,error.
- process(C):-
- C>6,error.
- error:-write('ERROR! enter number 1..9'),nl,nl,menu.
Решение задачи: «SWI-PROLOG, прога выдает ошибки»
textual
Листинг программы
- record
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д