Лабораторная работа №5. Тема: Работа с матрицами и внутренняя сортировка

Тема: Работа с матрицами и внутренняя сортировка.

Цель: изучение концепции наследования в ООП и его применение для организации работы с матрицами; освоение широко используемых методов внутренней сортировки.

 

Задание.

1. Изучить понятие наследования классов, а также возможности языка программирования С# для работы с наследованием классов.

2. На основе класса Array, реализованного в предыдущей лабораторной работе, создать производный от него класс Matrix.

3. Дочерний класс должен содержать такие закрытые члены:

- высота матрицы;

- ссылка на массив векторов базового класса;

а также следующие открытые методы:

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

- конструктор с параметрами, создающий и инициализирующий матрицу случайных чисел в заданном диапазоне; размер задается с использованием параметров;

- метод вывода элементов матрицы на консоль;

- метод, реализующий заданный алгоритм сортировки;

- метод, реализующий вычисление заданного показателя P;

- метод, реализующий заданное преобразование матрицы.

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

4. Составить тестовую программу, демонстрирующую реализацию указанных методов.

5. Составить блок-схему алгоритма каждого метода.

 

Содержание отчета

1. Титульный лист.

2. Цель работы, индивидуальное задание (таблица).

3. Листинг программы.

4. Блок-схемы методов класса.

5. Результаты тестирования всех методов.

6. Описание различий в работе конструкторов базового и производного классов.

7. Выводы.
Варианты заданий к лабораторной работе №5

№ вар. Массив и длина Интервал генерации Алгоритм внутренней сортировки Показатель Р Алгоритм обработки
  А(10, 8) [-10, 25] Методом пузырька отсортировать строки матрицы по возрастанию Сумма произведений элементов строки и столбца матрицы, на пересечении которых находится наибольший по абсолютной величине элемент матрицы. Все отрицательные элементы, расположенные по периметру матрицы заменить их абсолютными значениями.
  Х(5, 10) [-15, 10] Методом вставки отсортировать столбцы матрицы по убыванию Количество элементов матрицы, превышающих ее среднее арифметическое значение. Все положительные элементы матрицы разделить на ее среднее арифметическое значение.
  Y(10, 12) [-20, 10] Методом обмена отсортировать столбцы матрицы по возрастанию Сумма элементов матрицы, для которых i+j=k, где k - введенное с клавиатуры зна­чение. Проверить, что значение k позволяет найти решение для каждой из матриц. Все элементы матрицы, превышающие ее среднее арифметическое значение разделить на максимальный элемент.
  Z(10, 7) [-30, 40] Методом пузырька отсортировать столбцы матрицы по убыванию Сумма положительных элементов столбца, содержащего максимальный элемент матрицы. Все элементы столбца, содержащего минимальный элемент матрицы, уменьшить на ее среднее арифметическое значение.
  В(6, 11) [-20, 25] Методом вставки отсортировать строки матрицы по убыванию Разность между максимальным и мини­мальным значениями элементов массива. Все элементы строк, начинающихся с отрицательных элементов, умножить на максимальный элемент матрицы.
  С(8, 12) [-15, 75] Методом пузырька отсортировать строки матрицы по убыванию Сумма элементов, расположенных по периметру матрицы. Столбцы матрицы упорядочить по возрастанию значений их элементов.
  А(10, 9) [-30, 100] Методом обмена отсортировать строки матрицы по возрастанию Среднее геометрическое элементов матрицы: Все элементы матрицы разделить на ее максимальное значение.
  Х(9, 12) [-40, 20] Методом обмена отсортировать столбцы матрицы по убыванию Отношение среднего арифметического значения к минимальному элементу матрицы. Строки матрицы упорядочить по убыванию значений их элементов.
  Y(10, 10) [-50, 60] Методом пузырька отсортировать элементы главной диагонали по возрастанию Произведение ненулевых элементов строки матрицы, на которой расположен максимальный элемент. Все элементы матрицы уменьшить на ее среднее арифметическое значение.
  Z(7, 9) [-25, 15] Методом вставки отсортировать столбцы матрицы по возрастанию Сумма значений элементов матрицы, меньших ее среднего арифметического значения. Все положительные элементы строки, содержащей максимальный элемент разделить на ее среднее арифметическое значение
  T(5, 14) [-10, 5] Методом пузырька отсортировать четные строки матицы по возрастанию, а нечетные по убыванию Разность между суммой значений элементов четных и нечетных строк Элементы строк, у которых минимальные элементы положительные, увеличить на значения этих элементов.
  A(8, 8) [-5, 10] Методом вставки отсортировать главную диагональ матрицы по возрастанию Отношение произведения ненулевых элементов к сумме положительных элементов матрицы. Элементы столбцов, у которых среднее арифметическое значение отрицательно, разделить на эти средние значения.
  N(12, 6) [-20, 10] Методом обмена отсортировать нечетные столбцы матицы по убыванию, а четные по возрастанию Произведение ненулевых элементов, принадлежащих интервалу [-1,1] Все элементы матрицы, превышающие ее среднее ариф­метическое значение разделить на максимальный элемент.
  B(11, 11) [-30, 0] Методом пузырька отсортировать побочную диагональ матрицы по возрастанию Количество отрицательных элементов матрицы. Все элементы столбца, содержащего минимальный элемент матрицы, уменьшить на ее среднее арифметическое значение.
  M(10, 5) [-20, 25] Методом пузырька отсортировать четные столбцы матицы по убыванию, а нечетные по возрастанию Сумма элементов матрицы, больших ее среднего значения Столбцы матрицы упорядочить по возрастанию значений их элементов.
  R(5, 12) [-15, 75] Методом обмена отсортировать нечетные строки матрицы по убыванию Минимальный по абсолютной величине элемент матрицы. Все элементы строк, начинающихся с отрицательных элементов, умножить на максимальный элемент матрицы.
  C(10, 10) [-30, 100] Методом вставки отсортировать побочную диагональ матрицы по убыванию Отношение сумм элементов, лежащих выше и ниже главной диагонали матрицы. Элементы строк матрицы, начинающихся с положительных значений умножить на эти значения.
  F(7, 7) [-40, 20] Методом обмена отсортировать побочную диагональ матрицы по возрастанию Отношение произведения ненулевых элементов к сумме положительных элементов матрицы. Строки матрицы упорядочить по убыванию значений их элементов.
  S(10, 4) [-40, 60] Методом пузырька отсортировать четные столбцы матрицы по убыванию Отношение максимального и минимального элементов матрицы Все элементы матрицы уменьшить на ее среднее арифметическое значение.
  U(6, 15) [-15, 15] Методом вставки отсортировать четные строки матицы по убыванию, а нечетные по возрастанию Сумма элементов столбца в котором рас­положен максимальный элемент матрицы. Элементы строк, у которых минимальные элементы положительные, увеличить на значения этих элементов.
  V(11, 5) [-20, 5] Методом вставки отсортировать первый и последний столбцы матицы по убыванию, а остальные по возрастанию Разность модуля суммы отрицательных элементов и суммы положительных элементов Все элементы матрицы разделить на ее максимальное значение.
  D(9, 9) [-15, 10] Методом пузырька отсортировать главную диагональ матрицы по убыванию Произведение ненулевых элементов, лежа­щих выше главной диагонали матрицы Элементы столбцов, у которых среднее арифметическое значение отрицательно, разделить на эти средние значения.
  L(5, 11) [-20, 20] Методом обмена отсортировать первую и последнюю строки матицы по возрастанию, а остальные по убыванию Количество элементов матрицы, больших ее среднего значения. Все положительные элементы строки, содержащей максимальный элемент разделить на ее среднее арифметическое значение.
  G(8, 8) [-30, 20] Методом обмена отсортировать главную диагональ матрицы по убыванию Произведение элементов строк с положите­льными средними значениями для матрицы. Элементы столбцов матрицы, у которых среднее арифметическое значение >0 упорядочить по возрастанию.
    [-10, 55]      
    [-15, 35]      
    [-50, 10]      
    [-40, 40]      
    [-40, 70]      
    [-15, 15]      

 


 

Пример класса Matrix

 

public class Matrix: Array

{

public Matrix()

{

m = 5;

n = 10;

matr = new Array[m];

for (int i = 0; i < m; i++)

matr[i] = new Array(n);

Console.WriteLine("Matrix без параметров выполнен.");

}

 

public Matrix(int m, int n)

{

this.m = m;

this.n = n;

matr = new Array[m];

for (int i = 0; i < m; i++)

matr[i] = new Array(n);

Random rnd = new Random();

for (int i = 0; i < m; i++)

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

matr[i].ar[j] = rnd.Next(100);

Console.WriteLine("Matrix с параметрами выполнен.");

}

 

public void PrintMatrix()

{

for (int i = 0; i < m; i++)

matr[i].PrintArray();

}

 

// Метод выполняет сортировку элементов строк матрицы по возрастанию

// с использованием метода вставки

public void SortMatrix()

{

int j,k,l,el;

for (int i = 0; i < m; i++)

 

for (j = 1; j < n; j++)

{

el = matr[i].ar[j];

k = 0;

while (el > matr[i].ar[k])

k++;

for (l = j - 1; l >= k; l--)

matr[i].ar[l + 1] = matr[i].ar[l];

matr[i].ar[k] = el;

}

}

 

private int m;

private int n;

private Array[] matr;

}

// Конец определения производного класса Matrix


class Program

{

static void Main(string[] args)

{

Matrix m0 = new Matrix();

Console.WriteLine("\n");

Matrix m1 = new Matrix(5,10);

Console.WriteLine("\nИсходная матрица:");

m1.PrintMatrix();

m1.SortMatrix();

Console.WriteLine("\nОтсортированная матрица:");

m1.PrintMatrix();

 

Console.ReadKey();

}

}

 

 


 

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

 

1. Бишоп Дж. С# в кратком изложении / Дж. Бишоп, Н. Хорспул; Пер. с англ. — М.: БИНОМ. Лаборатория знаний, 2005. — 472 с, ил.

2. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft.NET

3. Framework 2.0 на языке С#. Мастер-класс. / Пер. с англ. — М.: Издательство «Русская Редакция»: СПб.: Питер, 2007. — 656 стр.: ил.

4. Шилдг, Герберт. Полный справочник по С#.: Пер. с англ. — М.: Издательский дом "Вильяме", 2004. — 752 с.: ил. — Парал. тит. англ.

5. Джесс Либерти. Программирование на С#: Создание.NET приложений. 2-е издание/ Пер. с англ. — М.: Издательство «Символ-Плюс»: СПб.: Питер, 2012. — 684 стр.: ил.

6. ГОСТ 34. «Информационная технология. Комплекс стандартов».

7. ГОСТ 19. «Единая система программной документации»

8. Хенкок Л., Кригер М. Введение в программирование на языке Си. - М.: Радио и связь, 1986.-192 с.

9. Болски М.И. Язык программирования Си. Справочник. - М.: Радио и связь,1988. -96 с.

10. Уинер Р. Язык Турбо Си. - М.: Мир, 1991. - 384 с.

11. Дейтел Х. С#: Пер. с англ. / Дейтел Х., Дейтел П., Листфилд Дж., Нието Т., Мегер Ш., Златкина М., СПб.: БХВ-Петербург, 2006. — 1056 с.: ил.

12. Троелсен, Э. Язык программирования С# 2005 и платформа.NET 2.0, 3-е издание.: Пер. с англ. — М.: ООО "И.Д. Вильямс", 2007. — 1168 с.: ил. — Парал, тит. англ.

13. Задачи по программированию (библиотека программиста). - М.: Наука, 1988. -224с.

14. Алексеев В.Е. и др. Вычислительная техника в инженерных и экономических расчетах: сборник задач и упражнений для вузов. - М.: Высшая школа, 1984. -306с.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: