Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Динамические структуры данных






7.1. Динамическое выделение памяти для одномерных массивов

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

 

1. Из двух массивов разной длины сформировать общий массив и вычислить сумму положительных элементов.

2. Из двух массивов разной длины сформировать общий массив и поменять местами его максимальный и минимальный элементы.

3. Получить массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по возрастанию (K = N + M).

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

5. Даны два вектора (одномерных массива), содержащих n вещественных элементов. Найти скалярное произведение двух векторов.

6. Даны три вектора (одномерных массива), содержащих n вещественных элементов. Определить, являются ли вектора ортогональными.

7. Дан массив целых чисел, содержащий n элементов Элементы массива циклически сдвинуть на К позиций влево.

8. Дан массив целых чисел, содержащий n элементов Элементы массива циклически сдвинуть на К позиций вправо.

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

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

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

12. Найти максимальную по длине монотонную неубывающую подпоследовательность элементов массива.

 

 


7.2. Динамическое выделение памяти для одномерных массивов структур

Написать функцию для создания динамического массива записей со сведениями о студентах (ФИО, возраст, курс, успеваемость). Выполнить задание 6.1.

 

7.3. Динамическое выделение памяти для двумерных массивов

Выполнить задание, используя динамическое выделение памяти для двумерного массива, двумя способами:

· описывая двумерный массив как одномерный, с расчетом смещения элемента массива по линейной формуле;

· описывая двумерный массив как указатель на массив указателей.

 

1. Для заданной матрицы А найти значение .

2. Найти норму заданной матрицы А, определенную как .

3. Определить, явля­ется ли заданная матрица ортонормированной, т. е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а ска­лярное произведение каждой строки на себя равно 1.

4. Подсчитать количество строк заданной матрицы, которые составлены из различных чисел.

5. Подсчитать количество столбцов заданной матрицы, которые составлены из различных чисел.

6. Поменять местами строку, содержащую элемент с наиболь­шим значением в матрице, со строкой, содержащей элемент с наименьшим значением.

7. Вывести номера столбцов, все элементы, которых четны.

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

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

10. Среди столбцов заданной матрицы, содержащих только такие элементы, которые по модулю не больше заданного натурального n, найти столбец с минимальным произведением элементов.

11. Найти все такие натуральные числа k, что k -я строка совпадает с k -м столбцом.

12. Матрица имеет седловую точку aij, если aij является минимальным в i -й строке и максимальным в j -м столбце. Найти все седловые точки заданной матрицы.


7.4. Стек

Создать связанную структуру данных – стек. Разработать функции для выполнения базовых операций над линейными связанными структурами, содержащими записи со сведениями о студентах: ФИО, возраст, пол, курс, успеваемость.

Выполнить задание 6.1.

 

7.5. Очередь

Создать связанную структуру данных – очередь. Разработать функции для выполнения базовых операций над линейными связанными структурами, содержащими записи со сведениями о студентах: ФИО, возраст, пол, курс, успеваемость.

Выполнить задание 6.1.


Классы

8.1. Класс «число». Инкапсуляция

Объявить класс «натуральное число» и определить его методы. Выполнить задание, используя объекты этого класса.

 

1. Определить число, полученное выписыванием в обратном порядке цифр натурального числа n.

2. Определить количество и сумму различных десятичных цифр в записи натурального числа n.

3. Проверить, есть ли в десятичном представлении натурального числа n одинаковые цифры. Вывести эти цифры.

4. Проверить, является ли введенное с клавиатуры натуральное число n палиндромом.

5. Найти сумму делителей и определить количество разрядов натурального числа n.

6. Определить сумму всех общих делителей натуральных чисел n и m

7. Проверить, является ли натуральное число n совершенным, т.е. равным сумме своих делителей.

8. Определить количество и сумму различных десятичных цифр в записи натурального числа n.

9. Определить число, полученное из заданного натурального числа n, путем удаления цифры, значение которой вводится с клавиатуры (если она есть в записи числа). Порядок следования других цифр числа не изменять.

10. Определить число, полученное из заданного натурального числа n, путем добавления цифры, значение которой вводится с клавиатуры, на место разряда, номер которого вводится с клавиатуры. Порядок следования других цифр числа не изменять.

11. Определить число, полученное из заданного натурального числа n, путем удаления одинаковых цифр (если они есть в записи числа). Порядок следования других цифр числа не изменять.

12. Определить число, полученное из заданного натурального числа n, путем повторения одинаковых цифр (если они есть в записи числа). Порядок следования других цифр числа не изменять.

 

 


8.2. Класс «вектор»

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

Реализовать три вида конструктора (без аргументов, инициализации, копирования), деструктор.

Максимально возможный размер массива задать константой. В отдельном поле size должно храниться значение количества элементов (размерность) объекта-вектора.

Определить методы:

· задания размерности вектора,

· определения количества элементов заданного вектора;

· получения элемента вектора по заданному индексу, с контролем выхода за пределы размерности вектора

· занесения значения элемента вектора по заданному индексу, с контролем выхода за пределы размерности вектора,

· сложения, вычитания, умножения и деления всех элементов вектора на скаляр,

· определения длины вектора (l= ),

· вычисления поэлементного сложения (вычитания, умножения, деления) векторов с одинаковыми границами индексов,

· вывод значений элементов вектора на экран,

· ввода значений элементов вектора с клавиатуры,

· заполнения элементов вектора случайными числами.

Разместить описание класса в заголовочном файле, а определения методов и главную функцию программы – в отдельных файлах. Использовать объекты класса «вектор» при решении предложенной задачи.


1. X(N) и Y(M) - исходные векторы. Определить вектор с максимальной длиной.

2. X(N) и Y(M) - исходные векторы. Определить вектор с минимальной длиной.

3. Вычислить скалярное произведение векторов X (N) и Y (N): k= . Получить вектор Z с элементами z i = x i + k.

4. Даны три вектора, содержащих n вещественных элементов. Определить, являются ли вектора ортогональными.

5. X (N) и Y (N) - исходные векторы. Получить вектор Z с элементами

z0=1; z i = x i * y i + x i-1*y i-1, i = 1, n-1.

6. X (N) и Y (N) - исходные векторы. Получить вектор Z с элементами

z0=1; z i = x i * y i - x i-1*y i-1, i = 1, n-1.

7. X (N) и Y (N) - исходные векторы. Получить вектор Z с элементами

z i = a*x i + b*y i, i = 0, n-1, a, b – максимальные значения векторов X, Y.

8. X (N) и Y (N) - исходные векторы. Получить вектор Z с элементами

z i = a*x i - b*y i, i = 0, n-1, a, b – минимальные значения векторов X, Y.

9. Найти среднее значение элементов вектора X (N) и max - максимальное отклонение значений x i от этого среднего значения. Получить вектор Z с элементами z i = x i + max.

10. Получить вектор Y(N), упорядоченный по возрастанию значений элементов вектора X (N). Вычислить скалярное произведение векторов X (N) и Y (N): k = .

11. Включить в упорядоченный вектор X (N) новый элемент z так, чтобы сохранилась упорядоченность его элементов. Реализовать алгоритм бинарного поиска для определения места вхождения включаемого элемента.

12. Получить вектор Z(К), упорядоченный по возрастанию, путем слияния векторов X(N) и Y(M), упорядоченных по возрастанию (K = N + M).

 

 


8.3. Перегрузка операций

Для предыдущего задания реализовать перегрузку заданной операции двумя способами: как метод класса, как независимую внешнюю функцию. Продемонстрировать выполнение этой операции над объектами типа «вектор».

1. «[]» - индексирования (обращения к отдельному элементу вектора),

2. «< <» - вывода значений элементов вектора на экран,

3. «> >» - ввода значений элементов вектора с клавиатуры,

4. «=» - присвоить всем элементам вектора значение скаляра,

5. «+» - сложения всех элементов вектора со скаляром,

6. «-» - вычитания из всех элементов вектора скаляр,

7. «*» - умножения всех элементов вектора на скаляр,

8. «/» - деления всех элементов вектора на скаляр,

9. «+» - поэлементного сложения двух векторов одинаковой размерности,

10. «-» - поэлементного вычитания двух векторов одинаковой размерности,

11. «*» - поэлементного умножения двух векторов одинаковой размерности,

12. «/» - поэлементного деления двух векторов одинаковой размерности.

 

 

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.