Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы(ЯМП, 3 сем).doc
Скачиваний:
18
Добавлен:
07.06.2015
Размер:
571.39 Кб
Скачать

Лабораторная работа №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