Обработка массивов информации
Цель работы: изучение основных приемов и алгоритмов, используемых при обработке массивов информации, а также особенностей их программной реализации на языке С++.
Задание к лабораторной работе
1 Ознакомиться с особенностями описания и использования массивов на языке С;
2 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;
3 Написать программу в соответствии с выданным вариантом задания (см. раздел «Варианты заданий»);
4 Оформить отчет.
Ход работы
1. Объявить массив из нескольких целых чисел, проинициализировать массив и вывести его на экран.
2. Изменить программу таким образом, чтобы ввод и вывод был сделан с использованием цикла «for». Например:
for (i=0;i<10;i++) {
printf(“\nВведите m[%d]:”,i);
scanf(“%d”,m[i]);
}
3. Объявить матрицу (двумерный массив). Заполнить ее целыми числами с помощью функции рандомизации и вывести построчно на экран.
Варианты заданий
1. Для двух введенных с клавиатуры слов определить являются ли они рифмой. Слова считаются рифмующимися, если их концовки, включающие последнюю гласную и хотя бы одну согласную, совпадают.
Например крючок - червячок,
земля - поляи т. д.
2. Имеется два массива, содержащие упорядоченные последовательности целых чисел. Необходимо слить исходные массивы в один. Результирующая последовательность должна быть упорядочена по тому же закону, что и исходные.
3. Имеется два массива, содержащие последовательности целых чисел. В первом из указанных массивов числа упорядочены. Необходимо включить в него числа из второго массива, не нарушив упорядоченности.
а) для включения очередного числа просматривать всю последовательность с начала;
б) для включения очередного числа осуществлять деление последовательности пополам, определяя в какую из двух половин должно быть включено число. Далее выбранная половина снова делится пополам и т.д. до тех пор, пока ни будет найдено место для включаемого числа.
Например в последовательность {18, 20, 37, 46, 54} необходимо включить число 40. Центральным элементом последовательности является число 37.
Т.к. 40>37, далее рассматриваем вторую половину исходной последовательности {37, 46, 54}. 40<46 - рассматриваем первую часть последовательности {37}.
40<37 и поскольку дальнейшее деление невозможно, включаемое число должно быть записано в последовательность после элемента 37.
Результат - {18, 20, 37, 40, 46, 54}.
4. Для введенного с клавиатуры наименования сформировать аббревиатуру. Например
исх. текст - Автоматизированные Системы Управления,
результат - АСУ.
5. Имеется массив, содержащий следующую информацию о сотрудниках некоторой организации:
фамилия, образование, шифр подразделения.
Кроме того, имеется массив, содержащий информацию о подразделениях данной организации:
шифр подразделения, наименование.
Необходимо объединить эту информацию и вывести на экран в виде таблицы:
Фамилия | Образование | Наименование подразделения |
... | ... | ... |
6. Имеется массив, содержащий информацию о сотрудниках некоторого предприятия:
фамилия, возраст, стаж, пол.
Необходимо определить, сколько процентов от общего числа сотрудников занимают
молодые специалисты (возраст < 35 лет, стаж < 4 лет),
работающие пенсионеры (возраст: женщины > 55 лет, мужчины > 60 лет),
прочие сотрудники.
7. Имеется матрица. Переставить строки матрицы в порядке возрастания сумм элементов.
8. Имеется матрица. Переставить столбцы матрицы в порядке убывания сумм элементов.
9. Имеется массив, содержащий данные о силе и направлении ветра на различных высотах. Произведена выброска парашютного десанта. Задана высота раскрытия парашюта. Скорость снижения парашютиста 5 м/с. Необходимо рассчитать величину и направление относа парашютиста, относительно точки десантирования.
10. Имеется массив, содержащий расписания отправления поездов из пункта А в пункт В. Известно расстояние между пунктами А и В и скорость поезда. Необходимо вычислить время прибытия поезда в пункт назначения. Результат оформить в виде таблицы:
N поезда | Время отправления | Время прибытия |
8.45 | 13.30 | |
9.15 | 15.00 | |
... | ... | ... |
11. Имеется массив, содержащий множество интервалов числовой прямой (а1,а2), (а3,а4), ... Определить
а) какие из заданных интервалов пересекаются;
б) какие интервалы полностью поглощают другие;
в) объединения каких интервалов являются непрерывными интервалами.
12. Имеется массив, содержащий координаты точек на плоскости. Осуществить перевод данных координат из декартовой системы в полярную и определить количество точек, попавших в каждый квадрант.
13. Имеется массив, содержащий координаты вершин прямоугольников (каждый прямоугольник задан координатами левого верхнего и правого нижнего углов). Определить какие прямоугольники не пересекают оси координат, какие пересекают ось Х, какие - Y
14. В одномерном массиве вычислить сумму элементов, стоящих между максимальным и минимальным элементом. Преобразовать массив, удалив из него нулевые элементы.
15. В массиве, все элементы которого различны, найти и удалить n наименьших элементов, сохраняя порядок следования остальных элементов.
16. Задан массив неотрицательных чисел. Найти в нем индекс элемента для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после.
17. Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нем.
18. Массив состоит из нулей и единиц. Найти в нем самую длинную цепочку подряд стоящих нулей.
19. Матрица состоит из 0 и 1. Найти в ней самую длинную цепочку подряд стоящих 0 по горизонтали или вертикали.
20. В массиве найти минимальный и максимальный элементы (Xmin и Xmax). На интервале от Xmin до Хmax найти все числа, которые не встречаются в массиве.