Контрольная работа


Задание на контрольную работу
Напишите на языке SWI-PROLOG программу для работы с базой данных по заданию. Начальная база данных должна храниться в файле. В программе должно присутствовать меню из 5 пунктов, реализующих следующие возможности:
1. просмотр содержимого динамической базы данных (при запуске программы динамическая база данных должна заполняться из файла базы данных только один раз и только в этом пункте);
2. добавления записи в динамическую базу данных (за один вход в этот пункт должна быть возможность добавления нескольких записей);
3. удаления записи из динамической базы данных (за один вход в этот пункт должна быть возможность удаления нескольких записей);
4. выполнения запроса к динамической базе данных по заданию;
5. выход из программы с сохранением содержимого динамической базы данных в исходный файл базы данных (сохранение должно быть только один раз и только в этом пункте).

Варианты заданий
0. Создайте базу данных об игрушках: название, стоимость. Получите названия всех наиболее дорогих игрушек (цены которых отличаются от самой дорогой не более, чем на 100 рублей).
1. Создайте базу данных городского транспорта: название транспорта, номер маршрута, список остановок. Определите, на каких маршрутах можно добраться от одной остановки до другой без пересадок. Названия остановок вводятся с клавиатуры.
2. Создайте базу данных об итогах сессии по 4 дисциплинам студентов определенной группы. Сформируйте список студентов на отчисление, имеющих не менее двух двоек.
3. Создайте базу данных с расписанием движения самолетов: номер рейса, пункт прибытия, стоимость билета. Определите все рейсы до города, название которого вводится с клавиатуры, с минимальной стоимостью билета.
4. Создайте базу данных с книжным каталогом: Ф.И.О. автора, название книги, издательство, год издания. Найдите все книги, изданные в издательстве, название которого вводится с клавиатуры, позже года, который также вводится с клавиатуры.
5. Создайте базу данных о товарах: наименование товара, фасовка, стоимость. Найдите все товары с минимальной стоимостью.
6. Создайте базу данных о сотрудниках: Ф.И.О., должность, оклад. Сформируйте список сотрудников с окладом выше среднего по предприятию (средний оклад выведите на экран).
7. Создайте базу данных об итогах сессии по 5 дисциплинам студентов определенной группы. Сформируйте список студентов, не имеющих двоек и сдавших экзамены на 4 и 5 не менее чем по трем предметам.
8. Создайте базу данных об игрушках: название, стоимость, возрастные границы. Получите названия всех самых дешевых игрушек, подходящих ребенку 3 лет.
9. Создайте базу данных о металлах: наименование, удельная проводимость. Определите все металлы с максимальной проводимостью.
=============================================

ЛАБОРАТОРНАЯ РАБОТА 1. «Обработка списков в языке CLISP»

Задание на лабораторную работу
Напишите на языке CLISP программу для работы со списками по заданию.
Обязательно использование рекурсии. Ввод всех входных данных должен
запрашиваться с клавиатуры в процессе работы программы (функции). Не
допускается использование: функционалов, а в теле рекурсивной функции -
операторов SET и SETQ.
Номер варианта выбирается по последней цифре пароля.
0. Сформируйте список из позиций элемента, заданного параметром X, в списке
L (нумерация элементов начинается с 1).
Например, при X=4, L=(8 3 4 6 4 1) функция должна вернуть (3 5).
1. Преобразуйте одноуровневый список L во вложенный по следующему
правилу.
Например, при L=(a s d f g) функция должна вернуть (a (s (d (f (g))))).
2. Преобразуйте одноуровневый список L во вложенный по следующему
правилу.
Например, при L=(a s d f g) функция должна вернуть (((((a) s) d) f) g).
3. Переставьте элементы списка L таким образом, чтобы одинаковые элементы
оказались рядом. Сортировку не использовать!
Например, при L=(1 5 2 1 4 3 1 2 4 5 4) функция должна вернуть
(1 1 1 5 5 2 2 4 4 4 3).
4. Сформируйте список из N элементов списка L, начиная с K-го элемента.
(нумерация элементов должна начинаться с 1).
Например, при L=(-2 6 s -1 4 f 0 z x r), K=3, N=4 функция должна вернуть
(s -1 4 f).
5. Удалите элементы из первого списка L1 с номерами из второго списка L2
(второй список упорядочен по возрастанию, нумерация элементов должна
начинаться с 1).
Например, при L1=(a s d f g h j k l), L2=(1 4 5 8) функция должна вернуть
(s d h j l).
6. Сформируйте список, состоящий из сумм первого и последнего, второго и
предпоследнего элементов числового списка и т.д. Каждый элемент должен
участвовать в сложении не более одного раза.
2
Например, при (1 -2 -3 4 5 6 -7 8 9) функция должна вернуть (10 6 -10 10 5).
7. Сформируйте список из пар соседних элементов списка L, одинаково
отстоящих от начала и конца списка.
Например, при L=(1 a b с 2 3 f) функция должна вернуть ((1 f) (a 3) (b 2) (с))
8. Объедините 2 списка L1 и L2 в один, чередуя элементы списков.
Например, при L1=(1 2 3 4 5 6 7 8), L2=(a s d f) функция должна вернуть
(1 a 2 s 3 d 4 f 5 6 7 8).
9. Добавьте элемент в конец числового списка L, чтобы сумма элементов нового
списка стала равна 100.
Например, при L=(2 10 15 50 30) функция должна вернуть (2 10 15 50 30 -7).

ЛАБОРАТОРНАЯ РАБОТА 2. «Обработка списков в языках CLISP и SWI-PROLOG»

Задание на лабораторную работу
Напишите на двух языках CLISP и SWI-PROLOG программы для работы со
списками по заданию. Обязательно использование рекурсии. Ввод всех входных
данных должен запрашиваться с клавиатуры в процессе работы программы
(функции или предиката). В программе на языке CLISP не допускается
использование: функционалов, а в теле рекурсивной функции - операторов SET
и SETQ. В программе на SWI-PROLOG предикат после вывода результатов
работы должен успешно завершиться (на экране появится true. и приглашение
следующего ввода цели ?-).
Номер варианта выбирается по последней цифре пароля.
0. Осуществите в списке L циклический сдвиг на N элементов влево.
Например, для языка CLISP при L = (a s d f g), N = 3 функция должна вернуть
(f g a s d).
1. Удалите из списка L все вхождения элемента X.
Например, для языка CLISP при L=(1 2 1 3 1 1 2 5 6), X=1 функция должна
вернуть (2 3 2 5 6).
2. Сформируйте список без повторений из тех элементов исходного списка L,
которые встречаются больше одного раза.
Например, для языка CLISP при L=(5 1 2 1 3 5 5 7) функция должна вернуть
(5 1).
3. Из каждой группы подряд идущих элементов списка L оставьте только один.
Например, для языка CLISP при L=(1 1 a a 3 3 3 + + + +) функция должна
вернуть (1 a 3 +).
4. Удалите из списка L за каждым вхождением X один элемент, если такой
имеется и отличен от X.
Например, для языка CLISP при L=(a 8 2 a a 5 a) X=a функция должна вернуть
(a 2 a a a).
5. Вставьте в список L1 элементы другого списка L2 после каждого вхождения
X в L1.
Например, для языка CLISP при L1=(1 2 1 5 3), X=1, L2=(+ * z) функция
должна вернуть (1 + * z 2 1 + * z 5 3).
2
6. Осуществите в списке L циклический сдвиг на N элементов вправо.
Например, для языка CLISP при L = (a s d f g), N = 3 функция должна вернуть
(d f g a s).
7. Удалите из списка L все повторные вхождения элементов.
Например, для языка CLISP при L=(1 2 1 4 1 2 3) функция должна вернуть
(1 2 4 3).
8. Удалите из списка L перед каждым вхождением X один элемент, если такой
имеется и отличен от X.
Например, для языка CLISP при L=(1 2 1 1 3), X=1 функция должна вернуть
(1 1 1 3).
9. Сформируйте новый список, каждый элемент которого - это список из двух
элементов: самого элемента и числа его вхождений в исходный список L.
Например, для языка CLISP при L=(2 4 2 3 2 3) функция должна вернуть
((2 3) (4 1) (3 2)).

ЛАБОРАТОРНАЯ РАБОТА 3. «Работа со строками и файлами в языке SWI-PROLOG»

Задание на лабораторную работу
Напишите на языке SWI-PROLOG программу для работы с текстовым
файлом, состоящим из нескольких строк. При преобразовании файла должны
быть сохранены переводы строк исходного файла.
Номер варианта выбирается по последней цифре пароля.
0. Текстовый файл состоит из нескольких строк, длина каждой из которых
меньше 40. Выровняйте строки текста по ширине (равномерным внесением
дополнительных пробелов между словами). Длины новых строк должны быть
равны 40. Сформируйте новый файл.
1. Запишите в новый файл все строки исходного файла, содержащие в качестве
фрагмента заданную строку, которая вводится с клавиатуры.
2. Определите, совпадают ли два текстовых файла. Если нет, то получите номер
первой строки и позиции первого символа в этой строке, в котором файлы
отличаются между собой.
3. В текстовом файле, состоящем из нескольких строк, во всех словах,
оканчивающихся на "ing" замените это окончание на "ed". Сформируйте
новый файл.
4. В текстовом файле, состоящем из нескольких строк, упорядочите слова в
каждой строке лексикографически. Сформируйте новый файл.
5. В каждой строке текстового файла, состоящего из нескольких строк,
переставьте слова в обратном порядке. Сформируйте новый файл.
6. В текстовом файле, состоящем из нескольких строк, подсчитайте количество
символов, исключая пробелы.
7. В текстовом файле, состоящем из нескольких строк, найдите слова,
содержащие наибольшее число гласных букв (a,e,i,o,u). Сформируйте новый
файл с найденными словами.
8. Найдите в файле все слова минимальной длины. Сформируйте новый файл с
найденными словами.
9. Обратите все слова в текстовом файле, сохраняя порядок слов и строк.
Сформируйте новый файл.
Обсудим вашу работу?
При заказе дарим онлайн-тест!
Заполните форму
и мы свяжемся с вами за 2 часа