Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные_работы_по_ИТ_(задания)

.pdf
Скачиваний:
35
Добавлен:
13.02.2015
Размер:
164.57 Кб
Скачать

5. Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменения размеров, построения наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.

6.Описать класс, реализующий десятичный счетчик, который может увеличивать или

уменьшать свое значение на единицу в заданном диапазоне. Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, позволяющее получить его текущее состояние. При выходе за границы диапазона выбрасываются исключения.

7.Описать класс, реализующий шестнадцатеричный счетчик, который может

увеличивать

или

уменьшать

свое

значение

на

единицу

в

заданном

диапазоне.

Предусмотреть

инициализацию

 

счетчика

значениями по умолчанию и произвольными

значениями. Счетчик имеет два метода:

увеличения и уменьшения, — и свойство

позволяющее

 

получить

 

его

 

текущее

состояние.

 

При

выходе

за

 

границы

диапазона выбрасываются исключения.

 

8. Описать

 

класс,

 

представляющий

треугольник. Предусмотреть методы для

создания

объектов,

перемещения

на

плоскости, изменения размеров и вращения

на заданный угол. Описать свойства

для

получения

 

состояния

 

объекта.

При

невозможности

построения

треугольника

выбрасывается исключение.

 

 

 

 

9. Составить

 

описание

 

класса

 

для

представления

 

даты.

 

Предусмотреть

возможности установки даты и изменения ее

отдельных

полей

(год,

месяц,

 

день)

с

проверкой допустимости вводимых значений. В случае недопустимых значений полей выбрасываются исключения. Создать методы

изменения

даты

на

заданное

количество

дней, месяцев и лет.

 

 

 

 

10. Составить

описание

класса

для

представления

времени.

Предусмотреть

возможности установки времени и изменения

его

отдельных

полей

(час,

минута,

секунда)

с

проверкой

 

допустимости

вводимых значений. В

случае

недопустимых

значений полей выбрасываются исключения.

Создать

методы изменения времени на

заданное

количество

часов, минут и

секунд.

 

 

 

11. Описать

класс,

представляющий

треугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения медиан. Описать свойства для получения состояния объекта. При невозможности построения треугольника выбрасывается исключение.

Лабораторная работа №5

Одномерные массивы.

При работе с массивами рекомендуется

опробовать

механизм

использования

массивов

переменной

размерности.

Если

при

объявлении

массивов

размерность задается константами, следует объявлять максимально разумные размерности, а затем вводить переменные размерности и циклы организовывать уже по ним.

Обращаем внимание на аккуратность использования индексов: общепринято в матрицах, например, первым индексом обозначать номер строки, а вторым — номер столбца (или количество соответственно).

При обработке массивов (вводимых с клавиатуры или генерируемых случайно) рекомендуется выводить на дисплей весь введенный массив в наглядной форме, с рациональным использованием площади экрана — для

визуального

контроля

правильности

ввода

и

демонстрации соответствия

результатов

введенным

данным.

 

 

 

 

 

Следует

максимально

 

ограничивать

себя

в

выделении

дополнительных

(рабочих)

массивов

размерности

того же порядка, что и обрабатываемые,

а также

искать эффективные по трудоемкости

алгоритмы: во многих задачах возможно решение за один проход (просмотр) массива, хотя провокационно напрашивается многопроходный алгоритм. Кроме того,

в«пассивных» задачах, посвященных анализу или

поиску в заданном массиве, следует воздерживаться от искажений массива в своих целях.

Задание состоит из 2-х частей.

Варианты заданий №1:

1.В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.

2.Дана последовательность действительных

чисел а1, а2,..., аn. Выяснить, будет ли она возрастающей.

3. Дана последовательность натуральных чисел а1, а2,..., аn. Создать массив из четных чисел этой последовательности. Если таких чисел нет, то вывести сообщение об этом факте.

4.Дана последовательность действительных чисел а1, а2,..., аn. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен.

5.Дан массив действительных чисел, размерность которого N. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.

6.Даны действительные числа а1, а2,..., аn. Поменять местами наибольший и наименьший элементы.

7.Даны натуральные числа а1, а2,..., аn.

Указать те из них, у которых остаток от деления на

Мравен L (0≤L≤ M— 1).

8.В заданном одномерном массиве поменять

местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах.

9. В одномерном массиве размещены: в первых элементах — значения аргумента, в следующих — соответствующие им значения функции. Вывести на экран элементы этого массива в виде двух

параллельных

столбцов

(аргумент

и

значения

функции).

 

 

 

 

 

10.

Дан

целочисленный массив

с

количеством

элементов n. Вывести на экран те его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, 16, ...).

11.Задан массив действительных чисел. Определить, сколько раз меняется знак в данной последовательности чисел, запомнить номера позиций,

вкоторых происходит смена знака.

Варианты заданий №2:

1.Банки. У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли-продажи в банках города. В городе N банков. Составьте программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли.

2.Очередь. У прилавка магазина выстроилась

очередь из n покупателей. Время обслуживания i-го

покупателя равно ti (i = 1, ..., n). Определить время Ci пребывания i-го покупателя в очереди.

3.Суперзамок. Секретный замок для сейфа состоит из 10 расположенных в рад ячеек, в которые надо вставить игральные кубики. Но дверь открывается только в том случае, когда в любых трех соседних ячейках сумма точек на передних гранях кубиков равна 10. (Игральный кубик имеет на каждой грани от 1 до 6 точек.) Напишите программу, которая разгадывает код замка при условии, что два кубика уже вставлены в ячейки.

4.Улитка. Каждый солнечный день улитка,

сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день опускается вниз на 1 см. В начале наблюдения улитка находилась в А см от земли на B-метровом дереве. Имеется 30-элементный массив, содержащий сведения о том, был ли соответствующий день наблюдения пасмурным или солнечным. Написать программу, определяющую местоположение улитки к концу 30-го дня наблюдения.

5.Опрос. Японская радиокомпания провела опрос N радиослушателей по вопросу: «Какое животное вы связываете с Японией и японцами? Составить программу получения k наиболее часто встречающихся ответов и их долей (в процентах).

6.Статистика. Напишите программу, входными

данными которой является возраст n человек. Программа подсчитывает количество людей, возраст которых находится в интервале 10 лет, а именно:

0 — 9 лет; 10—19 лет; 20 — 29 лет и т.д.

Вывести результаты расчетов в удобочитаемой форме.

7.Совместная работа. Известно время

t1,t2,…,tn за которое некоторую работу может выполнить каждый из n рабочих бригады, работая в одиночку. Сколько времени понадобится бригаде на выполнение этой работы, если они будут работать совместно (и при этом никто не «сачкует»)?

8.Расписание автобусов. Известно время

начала (например 6:00) и окончания (24:00) работы

некоторого пригородного автобусного маршрута с несколькими (n) автобусами на линии, а также протяженность маршрута в минутах (в один конец) и время отдыха на конечных остановках. Составить суточное расписание этого маршрута (моменты отправления с конечных пунктов) без учета обеда и пересмен.

9.Волга-матушка. Гидрологами исследовано течение реки в некотором сечении: произведена серия замеров по прямой от берега до берега перпендикулярно фарватеру, получены данные: si — расстояние от левого берега, м; hi — глубина реки, м; vi — скорость течения, м/с, i=1,2,…,n. Каков расход воды в сечении, т.е. сколько кубометров воды протекает через сечение в секунду?

10.Автостоп. Из пункта А в пункт В, между

которыми s км, выехал велосипедисте постоянной скоростью v0 км/ч. Навстречу ему — из пункта В — другой путешественник решил добраться «автостопом»

— на разных видах попутного транспорта. Перед каждым участком он τi минут «голосует», ожидая попутного транспорта, затем движется ti часов со скоростью vi км/час (величины τi, ti, vi, i = 1, 2,…, n заданы в соответствующих массивах). Через какое время после старта и на каком расстоянии от пункта А путники встретятся?

11. Сортировка. Заданы два одномерных

массива

с различным количеством элементов и

натуральное число k. Объединить их в один

массив,

включив

второй массив между k-м

и

(k+1)-м

элементами

первого,

при

этом

не

используя

дополнительный массив.

 

 

 

 

 

Лабораторная работа №6

Многомерные массивы.

Задачи этой темы подразумевают более сложные операции по обработке массивов: ввод, хранение в разных формах, элементы поиска. Основная цель темы

— дать представление о хранении информации большого объема в оперативной памяти, вычислении индексных выражений и адресации элементов, а также о выборе типов данных, оценке занимаемого ими объема.

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

1.Строки матрицы А(m, n) заполнены не полностью: в массиве L(m) указано количество элементов в каждой строке. Переслать элементы матрицы построчно в начало одномерного массива Т(m×n), подсчитать их количество.

2.Улитка. Матрицу М(m, n) заполнить натуральными числами от 1 до m×n по спирали, начинающейся в левом верхнем углу и закрученной по часовой стрелке.

3.Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это так, вывести координаты каждого просвета.

Рекомендация. Для хранения кубика выделить трехмерный массив с базовым типом минимально возможного размера, так как значениями его будут только единицы или нули. При тестировании полезно использовать рандомизацию — случайным образом присвоить элементам О или 1, возможно, с указанием вероятности тех и других, с последующей послойной распечаткой.

 

4.

Используя ту же

структуру данных, что и

в

предыдущей

задаче,

построить

полностью

непрозрачный куб, используя ровно n2 непрозрачных элементарных кубиков.

5. В матрице А(m, n) каждый элемент аij заменить минимальным среди элементов подматрицы A'(i, j), расположенной в левом верхнем углу

матрицы A.

6.Нарастающий итог. Каждый элемент аij

матрицы А(m, n) заменить суммой элементов подматрицы A’(i, j), расположенной в левом верхнем углу матрицы A.

7.Ввод элементов матрицы А(n, m)

осуществляется в произвольном порядке тройками чисел <i, j, aij>. Признаком конца ввода служат три нуля: <0, 0 ,0>. Проверить корректность такого ввода; все ли элементы введены, нет ли попытки повторного ввода или указания несуществующих

координат i и j.

 

 

 

 

 

Указание.

Разрешается

выделение

дополнительного

(рабочего)

массива

такой

же

размерности, что и исходный массив, например,

логического

типа

для

хранения

признаков

«заполненности» элементов матрицы.

 

При

попытке

повторного

ввода

пользователю предоставляется выбор: оставить старое значение или заменить его новым. По завершении ввода матрица распечатывается; при этом не введенные элементы замещаются пробелами или другими символами.

8. Задача Иосифа. По кругу располагаются n человек. Ведущий считает по кругу, начиная с первого, и выводит («казнит») m-го человека. Круг смыкается, счет возобновляется со следующего после «казненного»; так продолжается, пока «в живых» останется только один человек. Найти номер оставшегося «в живых» человека, а также для заданного n найти такое m > 1, при котором «в живых» останется первый.

9.Матрицу A(m, n) заполнить следующим образом. Для заданных k и l элементу akl присвоить значение 1; элементам, окаймляющим его (соседним с ним по вертикали, горизонтали и диагоналям) — значение 2; элементам следующего окаймления — значение 3 и так далее до заполнения всей матрицы

Примечание. Алгоритм не изменится, если координаты элемента (несуществующего) k и l находятся за пределами матрицы.

10.Работа комбайнера. Матрицу К(m, n) заполнить следующим образом. Элементам, находящимся

на периферии (по периметру матрицы), присвоить значение 1; периметру оставшейся подматрицы — значение 2 и так далее до заполнения всей матрицы.

11.Поворот матрицы. Рассматривая результат предыдущей задачи как нумерацию слоев матрицы, сдвинуть элементы заданной матрицы в пределах каждого слоя на одну позицию по часовой стрелке.

12.Замочная скважина. Даны мозаичные изображения замочной скважины и ключа. Пройдет ли ключ в скважину? То есть даны матрицы K(m1, n1) и L(m2, n2), m1>m2, n1>n2, состоящие из нулей и единиц. Проверить, можно ли наложить матрицу L на матрицу К (без поворота, разрешается только сдвиг) так, чтобы каждой единице матрицы L соответствовал нуль в матрице К, и если можно, то как (на сколько и в каком направлении следует подвинуть матрицу L по матрице K до выполнения условия)?

13.В массиве Х(m, n) каждый элемент (кроме граничных) заменить суммой непосредственно примыкающих к нему элементов по вертикали, горизонтали и диагоналям.

Лабораторная работа №7

Работа со строками.

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

1.Написать программу, которая считывает текст из файла и выводит на экран сначала предложения, начинающиеся с однобуквенных слов, а затем все остальные.

2.Написать программу, которая.считывает текст из файла и выводит на экран предложения, содержащие максимальное количество знаков пунктуации.

3.Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке.

4.Написать программу, которая считывает

текст из

файла и выводит его на экран, после

каждого

предложения

добавляя,

сколько

раз

встретилось в нем введенное с клавиатуры слово.

 

5.

Написать программу, которая считывает

текст из файла и выводит на экран сначала

вопросительные,

а

затем

восклицательные

предложения.

 

 

 

 

6.

Написать

программу,

которая

считывает

текст из файла и выводит

на экран только

предложения, состоящие

из заданного

количества

слов.

 

 

 

 

 

7.Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.

8.Написать программу, которая считывает текст из файла и - выводит на экран только строки, не содержащие двузначных чисел.

9.Написать программу, которая считывает текст из файла и выводит на экран только предложения, начинающиеся с тире, перед которым могут находиться только пробельные символы.

10.Написать программу, которая считывает английский текст из файла и выводит его на экран,