Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тексты индивидуальных задач, выполняемых в лабораторной работе. Дан массив целых чисел размером N




Задача 5.01

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

Задача 5.02

Дан массив действительных чисел размером N и целое число К. Если К меньше N, изменить порядок следования элементов в исходном массиве на обратный порядок отдельно до и отдельно после К -го элемента массива. Если K больше или равно N, то создать новый массив, не включив в него из исходного массива первый и последний элемент.

Задача 5.03

Дан массив действительных чисел размером N. Если в исходном массиве первый элемент больше его последнего элемента, то, не изменяя состояния исходного массива создать новый массив, в который поместить номера элементов исходного массива, соответствующие порядку убывания значений его элементов.

Задача 5.04

Даны два одномерных массива действительных чисел разного размера. Если в первом массиве есть числа, равные элементам второго массива, то их следует удалить из него. При удалении элементов массива он должен быть “сжат” перемещением оставшихся элементов в массиве. Если первый массив не удалось сжать, то создать третий массив, поместив в него элементы сначала первого, а за ними второго массивов.

 

Задача 5.05

Дан массив действительных чисел, среди которых заведомо есть как отрицательные числа, так и неотрицательные. Если в массиве есть как положительные, так и отрицательные элементы, то получить новый массив, значения которых вычисляются по формуле а1 x1, а2 x2, а3 x3,... аs xs, где а1... аp - отрицательные элементы исходного массива, взятые в порядке их следования, x1... xq – положительные элементы массива, взятые в обратном порядке. Размер нового массива вычисляется как минимум двух чисел – количества положительных и отрицательных элементов исходного массива s=min(p,q).

Задача 5.06

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

Задача 5.07

Дан массив действительных чисел размером N. Если размер массива число нечетное, то создать новый массив, в который поместить элементы следующим образом: первым поместить максимальный элемент исходного массива, затем минимальный, далее максимальный и минимальный из оставшихся элементов и т.д.

Задача 5.08

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

Задача 5.09

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

Задача 5.10

Составить функцию, которая для упорядоченного массива чисел, определяет с помощью метода “бинарного поиска", является ли некоторое заданное число элементом этого массива. Используя эту функцию решить следующую задачу: для упорядоченного массива и заданного числа создать новый массив путем добавления в него этого числа в начало массива, если это число не является его элементом, в противном случае новый массив не создается. Если массив не создан, выдать об этом соответствующее сообщение.

Следующие шаги описывают алгоритм метода “бинарного поиска":

Предположим, в упорядоченном по возрастанию массиве индексами являются: low=0 и high = n-1. Осуществляется поиск key.

Шаг 1. Вычислить индекс срединного элемента массива mid = (low + high) / 2.

Шаг 2. Сравнить срединный элемент с key. Если найдено совпадение, вернуть индекс mid.

Шаг 3. Если key больше срединного элемента, то совпадение должно происходить в диапазоне индексов mid+1,…,high. Это верно, т.к. список упорядочен по возрастанию. Новые границами поиска совпадения являются low = mid + 1 и high. Если key меньше срединного элемента, то совпадение должно происходить в диапазоне индексов low,.. …,mid -1. Новые границами поиска совпадения являются low и high= mid - 1.

Шаг 4. Если low меньше high, повторить шаг 1, в противном случае key не найден и возвращается индикатор того, что он не найден (например, значение -1).

В функции ввода массива предусмотреть возможность ввода только упорядоченного массива.

Задача 5.11

Составить функцию, которая, получив два массива, определяет, равны ли они. Два массива будем считать равными, если они содержат одинаковые числа.

Используя эту функцию решить следующую задачу:

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

Задача 5.12

Даны два массива действительные чисел а1...аn , b1...bm.. Еслипервый массив упорядочен 1<= а2.<=...<=аn ), то получить новый массив натуральных чисел k1...km таких, что ki - это номер (место) элемента массива места b i среди элементов массива а1...аn , (i=1,...,m). Для поиска места элементов в упорядоченном массиве применить алгоритм деления пополам.

Следующие шаги описывают алгоритм метода деления пополам:

Предположим, в упорядоченном по возрастанию массиве индексами являются: low=0 и high = n-1. Осуществляется поиск key.

Шаг 1. Вычислить индекс срединного элемента массива mid = (low + high) / 2.

Шаг 2. Сравнить срединный элемент с key. Если найдено совпадение, вернуть индекс mid.

Шаг 3. Если key больше срединного элемента, то совпадение должно происходить в диапазоне индексов mid+1,…,high. Это верно, т.к. список упорядочен по возрастанию. Новые границами поиска совпадения являются low = mid + 1 и high. Если key меньше срединного элемента, то совпадение должно происходить в диапазоне индексов low,.. …,mid -1. Новые границами поиска совпадения являются low и high= mid - 1.

Шаг 4. Если low меньше high, повторить шаг 1, в противном случае key не найден и возвращается индикатор того, что он не найден (например, значение -1).

 

Задача 5.13

Дан массив действительных чисел. Если его первый элемент не является максимальным элементом массива, то создать новый массив, расположив в нем элементы так, чтобы вначале массива шла группа элементов, больших первого элемента исходного массива. Затем - сам этот элемент, потом - группа элементов, меньших или равных ему в том порядке, в каком они расположены в исходном массиве.

Задача 5.14

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

Задача 5.15

Дан массив вещественных чисел а1...аn. Если массив упорядочен по убыванию, то создать из его элементов новый массив b1...bn, где каждый i элемент bi есть среднее арифметическое число всех членов последовательности а1...аn кроме его i элемента аi (i=1,2, …., n).

Задача 5.16

Дан массив целых чисел. Если в массиве есть повторяющиеся числа, то создать новый массив, в который поместить только разные числа из исходного массива. Если повторяющихся чисел в исходном массиве нет, то новый массив не создавать.

Задача 5.17

Дан массив действительных чисел размером N и целое число К. Если в исходном массиве чисел больше чем К, то в исходном массиве выполнить кольцевой сдвиг его элементов так, чтобы первый максимальный элемент этого массива оказался на K -ом месте. Кольцевой сдвиг массива выполняется всеми его элементами так, что элементы “выталкиваемые” из массива в одну сторону занимают освободившиеся место с другой стороны. Если число К больше или равно числу элементов в исходном массиве, то создать новый массив, как копию исходного массива, имеющего в качестве первого элемента число K.

Задача 5.18

Дан массив n целых чисел. Если исходный массив упорядочен по возрастанию, то создать новый массив, записав в него все элементы исходного массива по убыванию.

Задача 5.19

Дан массив n целых чисел а1...аn. Пусть m и М — наименьшее и наибольшее из них. Если разность этих чисел по модулю меньше, чем число, равное 3n, то сформировать массив целых чисел из диапазона от М до m, не являющихся элементами массива а1...аn . Числа в новом массиве расположить в порядке убывания.

Задача 5.20

Дан массив n действительных чисел. Если исходный массив имеет равное количество положительных и отрицательных чисел, создать новый массив, упорядочив исходный массив следующим образом. Первыми идут два максимальных элемента, затем два минимальных; далее два максимальных и два минимальных из оставшихся и т.д..

Задача 5.21

Дан массив действительных чисел, каждое из которых отлично от нуля. Если в массиве отрицательные и положительные элементы чередуются (+,-,+,-,+,-... или -,+,-,+,-,+,...), то получить новый массив, включив в него все отрицательные элементы исходного массива, сохранив обратный порядок их следования.

Задача 5.22

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

Задача 5.23

Дан массив n целых чисел. Если в исходном массиве четные и нечетные числа чередуются, то создается новый массив, все члены которого умножаются на минимальный элемент исходного массива.

Задача 5.24

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

Задача 5.25

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

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

Задача 5.26

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

Задача 5.27

Дан массив из М целых чисел. Если в массиве есть хотя бы одно простое число, сформировать новый массив, поместив в него из исходного массива только простые числа.

Задача 5.28

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

Задача 5.29

Дан массив n целых чисел. Если в исходном массиве есть хотя бы одно простое число, то создается новый массив, в котором все элементы исходного массива, кроме простых чисел, копируются в обратном порядке.

Задача 5.30

Дан массив целых чисел а1...аn. Если количество четных и нечетных элементов массива равно, то создать новый массив, в котором элементы исходного массива расположены в последовательности x1,y1,x2,y2,...,xk,yk, где x1,... xk - взятые в порядке следования четные элементы массива а1...аn , а y1...yk – нечетные, k=n/2.

Задача 5.31

Дан массив n действительных чисел и два целых числа k и K. Если целые числа k и K меньше размера массива n и массив упорядочен на отрезке от меньшего данного целого числа до большего числа, то создать новый массив. Каждый i элемент нового массива вычислить как среднее арифметическое всех предшествующих ему элементов в исходном массиве (i = 1,2,…,n-1).

Задача 5. 32

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

Задача 5. 33

Дан массив целых чисел. Если все элементы исходного массива положительны, то создать новый массив, в который включить из исходного массива только те числа, которые имеют четное число разрядов. В новый массив числа записать в порядке, обратном их следованию в исходном массиве.

ЛАБОРАТОРНАЯ РАБОТА № 6

ДВУМЕРНЫЕ МАССИВЫ (МАССИВЫ УКАЗАТЕЛЕЙ НА МАССИВЫ)

В ЯЗЫКЕ С++, РАЗРАБОТКА СТРУКТУРИРОВАННЫХ ПРОГРАММ

Цель работы: Составление алгоритмов и написание многомодульных программ циклической структуры с использованием массивов указателей на массив в среде С++ (обработка двумерных массивов данных). Статическое и динамическое распределение памяти.

 

Общие указания к заданиям лабораторной работы.

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

Для решения задачи разработайте следующие функции:

- функцию ввода m*n элементов числовой матрицы; при разработке этой функции используйте ранее разработанную вами функцию ввода одномерного массива данных;

- функцию обработки числовой матрицы (матриц) по правилу, определяемому в задаче вашего варианта;

При необходимости алгоритм обработки матрицы вашего варианта разбейте на процедуры, каждая из которых может реализовать отдельную независимую функцию, из которых можно составить конечный алгоритм обработки матрицы как одну функцию;

- функцию вывода числовой матрицы на экран в виде матрицы;

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

Программу разработайте в двух вариантах:

- используя статическое распределение памяти для хранения числовой матрицы (задайте некоторое максимально возможное количество обрабатываемых элементов в матрице);

- используя динамическое распределение памяти для матрицы.

Тексты функций сгруппируйте в файлы в вариантах статики и динамики:

· файл с функциями ввода и вывода;

· файл с функцией (функциями) обработки матриц;

· файл с функцией main.

В одном решении (solution) создать два проекта, каждый из которых реализует Вашу задачу в одном из двух вариантов распределения памяти под массивы (статики и динамики). Откомпилировать и выполнить проекты. Контроль правильности работы ваших проектов осуществить, используя исходные данные, подготовленные вами для отладки программы. Оба варианта программы на одних и тех же отладочных данных должны давать одинаковые результаты.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 979; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.05 сек.