- •Лабораторные работы по курсу "Языки и методы программирования" (семестр 3) Лабораторная работа №1. Вычисление значения функции в консольном приложении
- •Лабораторная работа №2. Вычисление значения функции в Windows-приложении
- •Лабораторная работа №3. Организация ветвления в Windows-приложении.
- •Лабораторная работа №4. Организация цикла в Windows-приложении.
- •Лабораторная работа №5. Разработка класса в консольном приложении.
- •Лабораторная работа №6. Использование графических объектов в Windows-приложении.
- •Лабораторная работа №7. Построение иерархии классов в консольном приложении.
- •Лабораторная работа №8. Перегрузка операций
- •Лабораторная работа №9. Коллекции
Лабораторная работа №9. Коллекции
Задание. Используя классы (коллекции), реализующие список, стек, очередь и словарь, выполнить свой вариант лабораторной работы.
Варианты заданий к лабораторной работе №9.
1. Создать список из двадцати случайных целых чисел в диапазоне от – 50 до 50. За один просмотр списка выведите на экран сначала все отрицательные значения с сохранением их исходного порядка, затем все остальные числа также с сохранением их порядка.
Указание. Используйте очередь.
Тестовый пример (с десятью элементами в списке).
Исходные данные: 7, 12, -4, 2, 3, -14, -6, 1, 0, -8
Результат: -4, -14, -6, -8, 7, 12, 2, 3, 1, 0
2. Создать два списка, каждый из которых содержит тридцать случайных целых чисел в диапазоне от 0 до 20. Из первого списка вывести все значения, которые не встречаются во втором списке, а из второго списка – те, которые не встречаются в первом.
Тестовый пример (с восемью элементами в каждом списке)
Первый список: 12, 5, 4, 17, 9, 18, 7, 4
Второй список: 7, 13, 18, 4, 6, 12, 1, 9
Результат: из первого списка: 5, 17
из второго списка: 13, 6 1
3. Создать список из пятидесяти случайных целых чисел в диапазоне от 10 до 30. Вывести на экран те значения, которые встречаются в списке ровно один раз.
Тестовый пример (с восемью элементами)
Исходные данные: 17, 23, 19, 12, 23, 29, 17, 23
Результат: 19, 12, 29
4. Создать список из двадцати случайных целых чисел в диапазоне от – 70 до 70. Переписать данные во второй список: сначала все положительные значения с сохранением их порядка в исходном списке, затем все остальные числа в обратном порядке по сравнению с исходным списком. Исходный и полученный списки вывести на экран.
Тестовый пример (с десятью элементами в списке).
Исходные данные: 7, 12, -4, 2, 3, -14, -6, 1, 0, -8
Результат: 7, 12, 2, 3, 1, -6, -8, 0, -14, -4
5. Ввести текстовую строку. Используя словарь, определить, сколько различных символов содержится в строке, и подсчитать количество появлений каждого такого символа. Результат вывести на экран.
Тестовый пример:
Исходная строка: АБРАКАДАБРА
Результат: различных символов = 5
А = 5, Б = 2, Р = 2, К = 1, Д = 1
6. Ввести две текстовые строки. Используя словарь, определить, можно ли из набора символов первой строки составить вторую строку. Результат вывести на экран.
Тестовые примеры:
Исходные строки: МАРКА и КОМАР. Результат: нельзя
Исходные строки: ПОМАРКА и РАМКА. Результат: можно
Исходные строки: ПОМАРКА и КОРКА. Результат: нельзя
7. Используя очередь, решите следующую задачу. На nкарточках написаны числа от 1 доn. Карточки собраны в стопку по порядку написанных на них чисел, так что вверху находится значение 1. Карточки выкладываются на стол слева направо следующим образом: первая кладется на стол, вторая под низ стопки, третья ‑ на стол, четвертая ‑ под низ стопки и т.д., пока все карточки не будут выложены на стол. Каким будет порядок карточек на столе?
Тестовый пример (n= 10):
Результат: 1, 3, 5, 7, 9, 2, 6, 10, 8, 4
8. Создайте две очереди. В первую поместите несколько целых положительных чисел, во вторую – несколько отрицательных чисел. Извлекая поочерёдно положительные и отрицательные числа из указанных очередей, заполните ими список. Когда одна из очередей станет пустой, дополните список числами из другой очереди.
Тестовый пример:
Первая очередь: 3, 8, 1, 4, 12, 6
Вторая очередь: -5, -2, -7
Результат: 3, -5, 8, -2, 1, -7, 4, 12, 6
9. Создайте очередь из целых чисел, отличных от нуля. Перенесите из очереди все имеющиеся там отрицательные числа в новый список. Результат (список и изменённую очередь) выведите на экран.
Тестовый пример:
Исходная очередь 3, 8, -5, 1, 4, -2, -7, 12, 6
Результат:
список: -5, -2, -7
очередь: 3, 8, 1, 4, 12, 6
10. В строке символов некоторые подстроки заключены в скобки, причём отдельные подстроки не вкладываются друг в друга. Выведите символы, стоящие вне скобок в исходном порядке, а символы, стоящие в скобках – обратном порядке (сами скобки выводить не нужно). Указание: используйте стек символов.
Тестовые примеры:
Исходная строка: Результат:
(СОРТ) ТРОС
Б(НОРА) БАРОН
(АТС)МЕ(АКС) СТАМЕСКА
11. Введите положительное целое число. Используя стек, получите его двоичное представление. Результат вывести на экран.
Тестовый пример:
Исходное число: 789
Результат: 1100010101
12. Строка символов содержит символы кириллицы и символ #, появление которого эквивалентно нажатию клавиши Backspace(удалению предыдущего символа). Несколько подряд идущих символов # эквивалентно стольким же нажатиям клавишиBackspace. Вывести символы, которые останутся в строке после всех удалений.Указание: используйте стек символов.
Тестовые примеры:
Исходная строка: Результат:
КОЛЯ##КАРТА##ДА КОКАРДА
ОС#Т###РОГ РОГ
13. Создать список из пятнадцати случайных целых чисел в диапазоне от ‑20 до 40. Переписать данные во второй список: сначала все положительные значения с сохранением их порядка в исходном списке, затем все остальные числа также с сохранением их порядка.
Тестовый пример (с десятью элементами в списке).
Исходные данные: 7, 12, -4, 2, 3, -14, -6, 1, 0, -8
Результат: 7, 12, 2, 3, 1, -4, -14, -6, 0, -8
14. Создать два списка, каждый из которых содержит двадцать случайных целых чисел в диапазоне от -10 до 10. Вывести все значения, которые встречаются и в первом и во втором списке одинаковое число раз.
Тестовый пример (с восемью элементами в каждом списке)
Первый список: 12, 5, 4, 17, 9, 18, 7, 4
Второй список: 7, 13, 18, 4, 6, 12, 1, 9
Результат: 7, 12
Замечание. Значение 4 в первый список входит два раза, а во второй – только один, поэтому оно не удовлетворяет условию задачи.
15. Создать список из пятидесяти случайных целых чисел в диапазоне от 15 до 25. Вывести на экран те значения, которые встречаются в списке ровно два раз.
Тестовый пример (с восемью элементами)
Исходные данные: 17, 23, 19, 12, 23, 19, 17, 23
Результат: 17, 19
16. Создать список из тридцати случайных целых чисел в диапазоне от –40 до 60. Переписать данные во второй список: сначала все отрицательные значения с сохранением их порядка в исходном списке, затем все остальные числа в обратном порядке по сравнению с исходным списком. Исходный и полученный списки вывести на экран.
Тестовый пример (с десятью элементами в списке).
Исходные данные: 7, 12, -4, 2, 3, -14, -6, 1, 0, -8
Результат: -4, -14, -6, -8, 0, 1, 3, 2, 12б 7
17. Создайте список из двадцати случайных целых чисел в диапазоне от 1 до 15. Определите наименьшее натуральное число, отсутствующее в списке. Выведите на экран отсортированный по возрастанию исходный список и искомое число.
Тестовый пример (с десятью элементами)
Исходные данные: 7, 2, 3, 1, 9, 12, 5, 10, 6, 4
Результат: 1, 2, 3, 4, 5, 6, 7, 9, 10, 12
отсутствует число 8
18. Создать очередь из пятнадцати случайных целых чисел в диапазоне от ‑10 до 20. Переписать данные из очереди в список по следующим правилам:
- положительное число удаляется из очереди, а его значение записывается в список без изменения;
- отрицательное число и ноль также удаляется из очереди, затем к его значению прибавляется 3, а результат добавляется в конец очереди.
Исходные данные и полученный список выводятся на экран.
Тестовый пример (с семью элементами):
Исходные данные: 3, -1, 8, -5, 0, 12, -4
Результат: 3, 8, 12, 2, 3, 1, 2
19. Создайте две очереди, одна из которых содержит пять произвольных десятичных цифр без повторений, а другая – остальные пять десятичных цифр. Реализуйте следующий алгоритм взаимодействия: на каждом шаге из очередей извлекаются их первые элементы. Оба элемента добавляются в очередь с бóльшим значением извлечённого элемента, причём сначала добавляется собственный элемент. Алгоритм прекращает работу, когда все десять цифр собираются в одной очереди. Получившуюся очередь выведите на экран.
Тестовый пример:
Первая очередь: 3, 7, 0, 1, 5
Вторая очередь: 9, 4, 2, 8, 6
Результат: 8, 4, 6, 3, 5, 0, 9, 2, 7, 1
Замечание.При некоторых вариантах порядка цифр в очередях возможно зацикливание алгоритма.
20. Создайте список из семнадцати случайных целых чисел. Заполните второй список, k-ый элемент которого равен максимуму из первыхkэлементов исходного списка. Оба списка выведите на экран.
Тестовый пример: (с семью элементами):
Первый список: -7, 3, 0, 1, 5, 12, 9
Второй список: -7, 3, 3, 3, 5, 12, 12
21. Создайте очередь, содержащую целые числа в диапазоне от 1 до 15. Из очереди одновременно извлекается два числа. Если оба числа одинаковой чётности, то в конец очереди добавляется половина их суммы. Если оба числа разной чётности, то в конец очереди добавляется половина их произведения. В конце концов в очереди останется одно значение. Выведите его на экран.
Тестовый пример: (с семью элементами):
Исходные данные: 7, 3, 10, 14, 5, 12, 6
Промежуточные результаты:
10, 14, 5, 12, 6, 5 // добавили половину суммы
5, 12, 6, 5, 12 // добавили половину суммы
6, 5, 12, 30 // добавили половину произведения
12, 30, 15 // добавили половину произведения
15, 21 // добавили половину суммы
18 // добавили половину суммы
Результат: 18
22. Создайте стек, содержащий целые числа в диапазоне от 1 до 15. Из стека одновременно извлекается два числа. Если оба числа одинаковой чётности, то в стек добавляется половина их суммы. Если оба числа разной чётности, то в стек добавляется половина их произведения. В конце концов в стеке останется одно значение. Выведите его на экран.
Тестовый пример: (с семью элементами):
Исходные данные: 7, 3, 10, 14, 5, 12, 6
// 7 – вершина стека
Промежуточные результаты:
5, 10, 14, 5, 12, 6 // добавили половину суммы
25, 14, 5, 12, 6 // добавили половину произведения
175, 5, 12, 6 // добавили половину произведения
90, 12, 6 // добавили половину суммы
51, 6 // добавили половину суммы
153 // добавили половину произведения
Результат: 153
23. Создайте список из двадцати пяти случайных целых чисел. Заполните второй список, k-ый элемент которого равен минимуму из первыхkэлементов исходного списка. Оба списка выведите на экран.
Тестовый пример: (с семью элементами):
Первый список: 9, 12, 5, 3, -7, 0, 1
Второй список: 9, 9, 5, 3, -7, -7, -7
24. Создать очередь из девятнадцати случайных целых чисел в диапазоне от ‑10 до 20. Переписать данные из очереди в список по следующим правилам:
- отрицательное число удаляется из очереди, а его значение записывается в список без изменения;
- положительное число и ноль также удаляется из очереди, затем из его значения вычитается 5, а результат добавляется в конец очереди.
Исходные данные и полученный список выводятся на экран.
Тестовый пример (с семью элементами):
Исходные данные: 3, -1, 8, -5, 0, 12, -4
Результат: -1, -5, -4, -2, -5, -2, -3
25. Создайте список из тринадцати случайных целых чисел в диапазоне от 10 до 50. За один просмотр списка выведите на экран сначала все числа, меньшие 20 с сохранением их исходного порядка, затем все остальные числа также с сохранением их порядка.
Указание. Используйте очередь.
Тестовый пример (с шестью элементами в списке).
Исходные данные: 17, 24, 32, 13, 45, 19
Результат: 17, 13, 19, 24, 32, 45
26. Поместите в стек натуральное число. Затем, пока стек не станет пустым, выполните следующие действия:
- извлекаем значение из стека;
- если извлечённое число равно единице, то увеличиваем счётчик единиц (до начала работы со стеком его следует обнулить);
- если извлечённое число больше единицы и чётно, то возвращаем в стек половину этого числа;
- если извлечённое число больше единицы и нечётно, то его делят на две части, отличающееся на единицу, обе части помещаются в стек – сначала бóльшую, а затем меньшую его часть.
Результат – значение счётчика единиц – вывести на экран.
Тестовый пример:
Исходное значение: 5
Промежуточные состояния стека:
3 2 // 5 заменяем на 3 и 2
3 1 // 2 заменяем на 1
3 // 1 удаляем из стека
2 1 // 3 заменяем на 2 и 1
2 // 1 удаляем из стека
1 // 2 заменяем на 1
пусто // 1 удаляем из стека
Результат: 3
27. Создайте очередь из случайных целых чисел в диапазоне от 5 до 30. Вычтите из каждого элемента очереди одно и то же число, введённое с клавиатуры. Исходную очередь и результат выведите на экран.
Тестовый пример:
Исходные данные: 7, 14, 10 25, 19, 8
Введённое число: 13
Результат: -6, 1, -3, 12, 6, -5
28. С клавиатуры вводится последовательность ненулевых целых чисел, заканчивающаяся нулём. Используя стек, вычислите сумму
где n– число введённых ненулевых значений, аxiестьi-ый элемент последовательности. Результат выведите на экран.
Тестовый пример:
Исходные данные: 2, -1, 7, 5, -9, 8, 0
Результат: 40
29. На плоскости задано несколько точек, пронумерованных от 1 до n. Некоторые из них соединены друг с другом непересекающимися линиями. Для каждой точки определить, используя словарь, со сколькими другими точками она соединена. Исходные данные вводятся в следующем формате:
- количество точек n;
- количество соединительных линий m;
- mпар целых чисел – номера связанных одной линией точек.
Тестовый пример:
Исходные данные:
n = 6
m = 5
4, 3, 2, 3, 4, 2, 1, 2, 6, 2
Результат:
Номер Количество
точки связей
4 2
3 2
2 4
1 1
6 1
5 0
30. Введите с клавиатуры натуральное число в диапазоне от 1 до 20. Поместите его в стек. Повторите следующую последовательность действий: если число Nна вершине стека равно единице, то вывести на экран количество элементов в стеке и закончить работу, иначе, если число на вершине стека чётно, то добавить в стек значениеN/2, если нечётно, то добавить в стек значение 3N+1.
Тестовый пример:
Исходное число: 7
Результат:
Содержимое стека (от дна к вершине)
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Количество элементов в стеке: 17