Главная страница
Навигация по странице:

  • 1. Списки (списки должны вводиться с клавиатуры во время выполнения программы, использование рекурсии обязательно)

  • 2. Строки, файлы

  • 3. Динамические базы данных

  • РГРФЛП. РГЗ_ФЛП. Pасчетногpафическое задание по дисциплине Функциональное и логическое программирование


    Скачать 145.07 Kb.
    НазваниеPасчетногpафическое задание по дисциплине Функциональное и логическое программирование
    АнкорРГРФЛП
    Дата12.12.2022
    Размер145.07 Kb.
    Формат файлаpdf
    Имя файлаРГЗ_ФЛП.pdf
    ТипОтчет
    #841066

    Pасчетно-гpафическое задание по дисциплине
    Функциональное и логическое программирование
    для студентов групп ИП-011–017, ИВ-021-023, ИС-041-042
    Каждый вариант состоит из трех задач (номер варианта соответствует номеру в журнале, выбирается по одной задаче из каждого раздела). Программы должны быть написаны на языке SWI-Prolog. После выполнению РГЗ оформляется отчет, содержащий титульный лист, условия задач, листинг программы, скриншот теста для каждого задания.
    1. Списки (списки должны вводиться с клавиатуры во время выполнения
    программы, использование рекурсии обязательно)
    1.1. Исходный список преобразуйте в новый "двойной" список таким образом, чтобы каждый элемент исходного списка удвоился.
    Например, [1,2,3]-> [1,1,2,2,3,3].
    1.2. Удалите из списка все повторные вхождения элементов.
    Например, [1,2,1,4,1,2,3]-> [1,2,4,3].
    1.3. Сформируйте новый список из общих элементов двух списков (пересечение множеств).
    Например, [1,2,3,5], [6,4,1,8,3]-> [1,3].
    1.4. Сформируйте новый список, включающий в себя без повторений все элементы двух списков (объединение множеств).
    Например, [1,2,3,4], [6,3,1,4]-> [1,2,3,4,6].
    1.5. Сформируйте новый список из тех элементов первого списка, которые не входят во второй (разность множеств).
    Например, [1,2,3,5], [6,3,1,8]-> [2,5].
    1.6. Осуществите циклический сдвиг в списке на n элементов вправо.
    1.7. Осуществите циклический сдвиг в списке на n элементов влево.
    1.8. Подсчитайте число вхождений каждого элемента списка и сформируйте новый список, каждый элемент которого - это список из двух элементов: самого элемента и числа его вхождений в список.
    Например, [2,4,2,3,2,3]-> [[2,3], [4,1], [3,2]].
    1.9. По кругу расположены n человек. Начиная с некоторой позиции, считаем от 1 до m по кругу. Каждый m-ый человек выбывает из круга, при этом круг смыкается.
    Определите порядок выбывания из круга.
    1.10. В непустой список, упорядоченный по неубыванию, добавьте новый элемент таким образом, чтобы сохранилась упорядоченность.
    1.11. Список целых чисел разделите на два списка: из чётных элементов и нечётных элементов.
    Например, [1,-2,3,5,-4]-> [1,3,5], [-2,-4].
    1.12. Преобразуйте список таким образом, чтобы все вхождения X в исходный список заменились на Y.
    Например, [1,2,1,4,2,1], X=1, Y=0-> [0,2,0,4,2,0].

    2 1.13. Удалите из списка все вхождения элемента X.
    Например, [1,2,1,3,1,1,2,5,6], X=1-> [2,3,2,5,6].
    1.14. Возведите в квадрат каждый третий элемент списка.
    1.15. В списке из каждой группы подряд идущих элементов оставьте только один.
    Например, [1,1,2,2,3,3,3,4,4,4,4]-> [1,2,3,4].
    1.16. Вставьте в список новый элемент X перед всеми вхождениями Y, если Y входит в исходный список.
    Например, [1,2,1,5,8,1,0], X=5, Y=1-> [5,1,2,5,1,5,8,5,1,0].
    1.17. Удалите из списка перед каждым вхождением X один элемент, если такой имеется и отличен от X.
    Например, [1,2,1,1,3], X=1-> [1,1,1,3].
    1.18. Удалите из списка за каждым вхождением X один элемент, если такой имеется и отличен от X.
    Например, [1,8,2,1,1,5,1], X=1-> [1,2,1,1,1].
    1.19. Сформируйте новый список без повторений из тех элементов исходного списка, которые встречаются больше одного раза.
    Например, [5,1,2,1,3,5,5,7]-> [5,1].
    1.20. Вставьте в список элементы другого списка после каждого вхождения X, если X входит в исходный список.
    Например, [1,2,1,5,3], X=1, [0,7,9]-> [1,0,7,9,2,1,0,7,9,5,3].
    2. Строки, файлы
    2.1. Текстовый файл состоит из нескольких строк, длина каждой из которых меньше 40.
    Выровняйте строки текста по ширине (равномерным внесением дополнительных пробелов между словами). Длины новых строк должны быть равны 40. Сформируйте новый файл.
    2.2. Запишите в новый файл все строки исходного файла, содержащие в качестве фрагмента заданную строку, которая вводится с клавиатуры.
    2.3. Определите, совпадают ли два текстовых файла. Если нет, то получите номер первой строки и позиции первого символа в этой строке, в которых файлы отличаются между собой.
    2.4. В текстовом файле, состоящем из нескольких строк, во всех словах, оканчивающихся на "ing" замените это окончание на "ed". Сформируйте новый файл.
    2.5. Файл содержит сведения о сотрудниках учреждения в виде: Фамилия Имя Отчество
    (сведения о каждом сотруднике размещаются на новой строке). Запишите эти сведения в другой файл по образцу: Фамилия И. О.
    2.6. В текстовом файле, состоящем из нескольких строк, упорядочите слова в каждой строке лексикографически. Сформируйте новый файл.
    2.7. В каждой строке текстового файла переставьте слова в обратном порядке.
    Сформируйте новый файл.

    3 2.8. В текстовом файле, состоящем из нескольких строк, определите количество слов в каждой строке и информацию об этом занесите в отдельную строку нового файла в виде: cтрока №<номер строки> содержит <количество слов в строке> слов.
    2.9. В текстовом файле, состоящем из нескольких строк, найдите слова, содержащие наибольшее число гласных букв (a,e,i,o,u). Сформируйте новый файл из найденных слов.
    2.10. Найдите в файле все слова минимальной длины. Сформируйте новый файл из найденных слов.
    2.11. Найдите в файле все слова максимальной длины. Сформируйте новый файл из найденных слов.
    2.12. В текстовом файле, состоящем из нескольких строк, удалите все пробелы и занесите полученную последовательность символов в новый файл по 20 элементов в строке.
    2.13. Переставьте строки текстового файла в обратном порядке. Сформируйте новый файл.
    2.14. Обратите все слова в текстовом файле, сохраняя порядок слов и строк.
    Сформируйте новый файл.
    2.15. Преобразуйте текстовый файл, состоящий из нескольких строк, таким образом, чтобы все слова в каждой строке разделялись символом *. Сформируйте новый файл.
    2.16. Из текстового файла, содержащего несколько строк, удалите все слова максимальной длины. Сформируйте новый файл.
    2.17. Преобразуйте текстовый файл, состоящий из нескольких строк, таким образом, чтобы все символы в каждой строке разделялись одним пробелом. Сформируйте новый файл.
    2.18. Удалите из текстового файла, состоящего из нескольких строк, все однобуквенные слова и лишние пробелы, сохранив порядок строк. Сформируйте новый файл.
    2.19. В текстовом файле, состоящем из нескольких строк, найдите все одинаковые слова и их количество и информацию об этом занесите в отдельную строку нового файла в виде:
    <слово> - <количество повторений> повторов
    Строки в новом файле не должны повторяться.
    2.20. В текстовом файле, состоящем из нескольких строк, удалите все пробелы и занесите полученную последовательность символов в новый файл по 20 элементов в строке.
    3. Динамические базы данных
    Напишите программу для работы с базой данных по заданию. Начальная база данных должна храниться в файле базы данных. В программе должно присутствовать меню из
    5 пунктов, реализующих следующие возможности:
    − просмотр содержимого базы данных;
    − добавления записи (за один вход в этот пункт должна быть возможность добавления нескольких записей);

    4
    − удаления записи (за один вход в этот пункт должна быть возможность удаления нескольких записей);
    − выполнения запроса к базе данных по заданию;
    − выход из программы с сохранением содержимого базы данных в файл базы данных.
    3.1. Создайте базу данных об игрушках: название, стоимость. Получите названия всех наиболее дорогих игрушек (цены которых отличаются от самой дорогой не более чем на 100 рублей).
    3.2. Создайте базу данных городского транспорта: название транспорта, номер маршрута, список остановок. Определите, на каких маршрутах можно добраться от одной остановки до другой без пересадок. Названия остановок вводятся с клавиатуры.
    3.3. Создайте базу данных об итогах сессии студентов Вашей группы по 4 дисциплинам. Сформируйте список студентов на отчисление, имеющих не менее двух двоек.
    3.4. Создайте базу данных с расписанием движения поездов: номер поезда, пункт назначения, время отправления. Найдите номер и время отправления ближайшего поезда до Москвы. Текущее время вводится с клавиатуры. Не забудьте рассмотреть переход в следующие сутки.
    3.5. Создайте базу данных с расписанием движения самолетов: номер рейса, пункт прибытия, стоимость билета. Определите все рейсы до города, название которого вводится с клавиатуры, с минимальной стоимостью билета.
    3.6. Создайте базу данных с книжным каталогом: Ф.И.О. автора, название книги, издательство, год издания. Найдите все книги, изданные в издательстве, название которого вводится с клавиатуры, позже года, который также вводится с клавиатуры.
    3.7. Создайте базу данных о товарах: наименование товара, фасовка, стоимость.
    Найдите все товары с минимальной стоимостью.
    3.8. Создайте базу данных с таблицей игр чемпионата по футболу: первая команда, вторая команда, счет игры. Определите все команды, забившие наибольшее количество голов (за весь чемпионат).
    3.9. Создайте базу данных о сотрудниках: Ф.И.О., должность, оклад. Сформируйте список сотрудников с окладом выше среднего по предприятию (средний оклад выведите на экран).
    3.10. Создайте базу данных об итогах сессии студентов Вашей группы по 5 дисциплинам. Сформируйте список студентов, не имеющих двоек и сдавших экзамены на 4 и 5 не менее чем по трем предметам.
    3.11. Создайте базу данных об игрушках: название, стоимость, возрастные границы.
    Получите названия всех самых дешевых игрушек, подходящих ребенку 3 лет.
    3.12. Создайте базу данных о металлах: наименование, стоимость 1 кг. Определите все металлы с минимальной стоимостью.

    5 3.13. Создайте базу данных об игрушках: название, стоимость. Получите названия наиболее дешевых игрушек (цены которых отличаются от самой дешевой не более чем на 100 рублей).
    3.14. Создайте базу данных с расписанием движения самолетов: номер рейса, пункт прибытия, время отправления, стоимость билета. Определите все рейсы до города, название которого вводится с клавиатуры, вылетающие в ближайшие 6 часов с минимальной стоимостью билета. Текущее время вводится с клавиатуры. Не забудьте рассмотреть переход в следующие сутки.
    3.15. Создайте базу данных об итогах сессии студентов Вашей группы по 5 дисциплинам. Сформируйте список студентов на повышенную стипендию не имеющих двоек и троек и сдавших экзамены на 5 не менее чем по трем предметам:
    3.16. Создайте базу данных, содержащую сведения о пассажирах: Ф.И.О., вес багажа.
    Определите всех пассажиров, у которых вес багажа меньше среднего (средний вес выведите на экран).
    3.17. Создайте базу данных о товарах: наименование товара, фасовка, срок годности.
    Найдите все товары с истекшим сроком годности. Текущая дата вводится с клавиатуры.
    3.18. Создайте базу данных с таблицей игр чемпионата по футболу: первая команда, вторая команда, счет игры. Определите все команды, пропустившие наибольшее количество голов (за весь чемпионат).
    3.19. Создайте базу данных о сотрудниках: фамилия, имя, должность, оклад.
    Сформируйте список сотрудников с окладом ниже среднего по предприятию.
    3.20. Создайте базу данных о металлах: наименование, удельная проводимость.
    Определите все металлы с максимальной проводимостью.


    написать администратору сайта