Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО - задание по лабам.doc
Скачиваний:
4
Добавлен:
17.11.2019
Размер:
113.15 Кб
Скачать

14

Лабораторная работа № 1 Основы системы программирования Ruby

Цель работы – получение навыков разработки на Ruby.

Порядок выполнения работы

  1. Подготовить последовательный алгоритм решения задачи, приведенной в конце описания (вариант задания соответствует номеру бригады). Реализовать его на языке программирования Ruby и другом известном языке (Pascal, C++ и др.). Использовать файловый ввод/вывод необходимых данных.

  2. Сравнить полученные программы по количеству строк исходного текста, количеству операторов, количеству циклов, условных операторов.

Требования к программному обеспечению

Язык сообщений программы должен быть русским. Использовать транслитерацию запрещается. Необходимо комментировать назначение всех атрибутов, констант и методов. Комментарии также должны быть русскоязычными. Для методов необходимо комментировать назначение входных параметров и возвращаемое значение.

Содержание отчета

1. Постановка задачи

2. Описание алгоритма решения задачи (схемы алгоритмов не обязательны)

3. Таблица с результатами сравнения 2-х реализаций

4. Выводы

5. Приложения

5.1. Результаты тестирования

5.2. Листинги программ

Варианты заданий

1. Отсутствующее число в массиве

Массив длины N в случайном порядке заполнен целыми числами из диапазона от 0 до N. Каждое число встречается в массиве не более одного раза. Найти отсутствующее число (дырку). Есть очень простой и оригинальный способ решения. Сложность алгоритма O(N), т.е. задача решается за один проход. Использование дополнительной памяти, пропорциональной длине массива, не допускается.

2. Черные квадраты

На дискретном (клетчатом) белом квадратном поле с длиной стороны N размещены несоприкасающиеся черные квадраты. Посчитать число квадратов.

3. Количество различных чисел

Массив длины N заполнен в случайном порядке числами из диапазона от 1 до k < N. Не используя других массивов, подсчитать количество различных чисел. Количество шагов порядка N + k.

4. Перестановка сегментов неодинаковой длины

Сегментом называется непрерывная последовательность элементов массива. Массив состоит из двух сегментов неодинаковой длины. Не используя дополнительную память, пропорциональную N, поменять сегменты местами.

5 . Случайный спуск по дереву

На вход подается описание бинарного дерева. На листьях этого дерева написаны целые числа. Идем от корня дерева, случайно поворачивая направо или налево (с вероятностями 0.5). Чему равно среднее значение числа на листе, в который мы в конечном счете придем? Ответ вывести с точностью до двух знаков после запятой.

Формат описания дерева следующий: tree ::= leaf | (tree tree); leaf ::= integer;

Например, (((3 5) 1) (9 4))

Результат: 4.50

6. Пересечение множеств

Вход — два множества натуральных чисел.

Выход — их пересечение (перечисление элементов через пробел в любом порядке без повторений) или слово empty если пересечение пусто.

Множества A={a1, a2, ... , an} и B={b1, b2 ... bk} Возможны повторения элементов, которые надо исключить.

ВХОД #1:

6 7 8 1 2 3

4 3 2 1 1

ВХОД #2:

1 2 3

4 4 5 5 6 6

ВЫХОД #1:

1 2 3

ВЫХОД #2:

empty