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




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

Изучение многомерных динамических массивов в языке программирования С++

 

Цель лабораторной работы

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

 

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

1. Ознакомится с лекционным материалом темой 14.

2. Изучить по основной и дополнительной литературе, следующие разделы:

2.1. По рекомендованной литературе изучить: [Л2]: главы 2,3;

2.2. По рекомендованной литературе изучить: [Д2]: пп. 2.1; 2.2.

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

 

Краткие теоретические сведения

Для организации двумерного массива n*m типа type достаточно выделить n массивов длины m. И для удобства работы с ними адреса их первых элементов поместить в массив типа *type из n переменных. Аналогично для массива произвольной размерности типа type достаточно создать массив на размерность ниже, элементами которого являются указатели *type и каждому такому указателю с помощью оператора new выделить память под новый массив. Рекурсивный характер предложенного подхода позволяет создавать массивы сколь угодно большой размерности на основе одномерного массива указателей. Рассмотрим пример для двумерного массива:

int **matrix, n, m;

matrix =newint*[n]

for(int ii=0; ii<n;ii++)

marix[ii] = new int[m];

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

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

 

Задание №1

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

 

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

1. Определить максимальное из чисел, встречающихся в матрице более одного раза.

2. Определить количество столбцов, не содержащих ни одного нулевого элемента.

3. Определить номер строки, в которой находится самая длинная серия одинаковых элементов.

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

5. Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

6. Определить сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

7. Определить номера строк и столбцов всех седловых точек матрицы. Матрица А имеет седловую точку aij, если aij является минимальным элементом в i

8. строке и максимальным в j -м столбце.

9. Определить такие k, что k -я строка матрицы совпадает с k -м столбцом.

10. Определить сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

11. Определить сумму элементов в тех столбцах, которые содержат хотя бы один неотрицательный элемент.

12. Определить сумму модулей элементов, расположенных ниже главной диагонали.

13. Определить число локальных минимумов заданной матрицы Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей

14. Определить сумму модулей элементов, расположенных выше главной диагонали.

15. Определить число локальных максимумов заданной матрицы Элемент матрицы называется локальным максимумом, если он строго меньше всех имеющихся у него соседей.

16. Определить число экстремумов заданной матрицы Элемент матрицы называется экстремумом, если он является локальным минимумом или максимумом.

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

18. Определить номер строки с максимальным значением характеристики. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов.

19. Определить номер первого из столбцов, не содержащих ни одного отрицательного элемента.

20. Определить количество строк, содержащих хотя бы один нулевой элемент.

21. Определить номер столбца, в котором находится самая длинная серия одинаковых элементов.

22. Определить сумму элементов в тех строках, которые не содержат отрицательных элементов.

23. Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

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

25. Определить номера строк и столбцов всех седловых точек матрицы. Матрица А имеет седловую точку aij, если aij является минимальным элементом в i -й строке и максимальным в j -м столбце.

26. Определить является ли рассматриваемая матрица волшебным квадратом. Волшебный квадрат – квадратная матрица, сумма элементов строк и столбцов которой одинакова.

27. Определить является ли рассматриваемая матрица волшебным квадратом. Волшебный квадрат – квадратная матрица, произведение элементов строк и столбцов которой одинаково.

 

Задание №2

а) Написать программу, в которой пользователь вводит целые числа m и n, а также вещественные числа a и b. После чего в программе генерируется матрица заполненная случайными вещественными числами из интервала [ a, b ]. Данная матрица выводится на экран. После чего выводится преобразованная матрица в соответствии с вариантом задания.

 

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

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

2. Характеристикой столбца матрицы назовем сумму его положительных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с убыванием характеристик. Сортировку осуществлять алгоритмом простого выбора.

3. Характеристикой строки целочисленной матрицы назовем сумму ее положительных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Сортировку осуществлять алгоритмом «расчёска».

4. Характеристикой столбца матрицы назовем сумму его положительных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с убыванием характеристик. Сортировку осуществлять алгоритмом «расчёска».

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

6. Характеристикой столбца матрицы назовем его длину как вектора. Переставляя столбцы заданной матрицы, расположить их в соответствии с убыванием характеристик. Сортировку осуществлять алгоритмом простого выбора.

7. Характеристикой строки целочисленной матрицы назовем ее длину как вектора. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Сортировку осуществлять алгоритмом «расчёска».

8. Характеристикой столбца матрицы назовем его длину как вектора. Переставляя столбцы заданной матрицы, расположить их в соответствии с убыванием характеристик. Сортировку осуществлять алгоритмом «расчёска».

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

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

11. Уплотнить заданную матрицу, удалив из нее строки, заполненные нулями.

12. Уплотнить заданную матрицу, удалив из нее столбцы, заполненные нулями.

13. Осуществить циклический сдвиг элементов матрицы на k элементов вправо, k может быть больше количества элементов в строке. k – целое неотрицательное число, вводимое от пользователя.

14. Осуществить циклический сдвиг элементов матрицы на k элементов влево, k может быть больше количества элементов в строке. k – целое неотрицательное число, вводимое от пользователя.

15. Осуществить циклический сдвиг элементов матрицы на k элементов вниз, k может быть больше количества элементов в столбце. k – целое неотрицательное число, вводимое от пользователя.

16. Осуществить циклический сдвиг элементов матрицы на k элементов вверх, k может быть больше количества элементов в столбце. k – целое неотрицательное число, вводимое от пользователя.

17. Матрица задаёт систему линейных уравнений – привести матрицу к треугольному виду.

18. Матрица задаёт систему линейных уравнений – уплотнить матрицу, забив некоторые элементы нулями и укоротив строки за счёт удаления нулевых элементов. При этом уплотнённая матрица должна отражать заданную систему уравнений.

б) Написать программу в которой:

19. пользователь задаёт число строк в матрице и число элементов в каждой строке. Матрица заполняется случайными целыми числами из заданного пользователем интервала и выводиться.

20. создаётся матрица из n строк, причём в каждой строке число элементов определяется как остаток от деления n на k, где n и k – целые числа вводимые от пользователя.

21. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

22. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

23. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

24. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

 

25. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

 

26. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

27. пользователь вводит целое число n, а программа генерирует матрицу и заполняет её натуральным рядом чисел по заданной траектории:

пример для n = 3 пример для n = 5
     
     
     

 

         
         
         
         
         

 

 

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: