Программная инженерия Нижний Новгород 017 Лабораторный
Download 1.23 Mb. Pdf ko'rish
|
Pract ADS
- Bu sahifa navigatsiya:
- Утверждение
3.4.2.
Матрица template TMatrix const TMatrix { if (this != &mt) { if (Size != mt.Size) { delete[] pVector; pVector = new TVector } Size = mt.Size; StartIndex = mt.StartIndex; for (int i = 0; i < Size; i++) pVector[i] = mt.pVector[i]; } return *this; } Комментарии: матрица хранится как вектор векторов переменной длины. В поле pVector каждая ячейка хранит указатель на объект класса Вектор; строка pVector = new TVector выделяет участок памяти для mt.Size объектов класса Век тор (при этом для каждого из них при создании используется конструктор с параметрами по умолчанию, устанавливающий размер вектора равный 10); строка в цикле pVector[i] = mt.pVector[i]; для каждого созданного объекта-вектора вызывает его оператор присваивания, который установит правильный размер и скопирует элементы. Нетрудно заметить, что реализация методов присваивания для вектора и матрицы совпадает с точностью до обозначений, за исключением одной строки, выделяющей память под новое количество элементов поля pVector. Посмотрим теперь на реализацию метода сложения векторов. template TVector { TVector temp(Size, StartIndex); 33 for (int i = 0; i < Size; i++) temp.pVector[i] = pVector[i] + v.pVector[i]; return temp; } Выбранный нами ранее способ определения матрицы как вектора векторных элементов позволяет сделать следующее Утверждение Пусть матрица A = (a i ), где a i – вектор из i элементов, матрица B = (b i ), где b i – вектор из i элементов, тогда результатом сложения матриц A и B будет матрица C = (c i ), где c i – вектор из i элементов и c i = a i + b i при всех i = 1..n. Истинность данного утверждения нетрудно показать. Также очевидно, что полученный способ вычисления суммы матриц совпадает с данным в разделе 2 определением суммы векторов. Таким образом, должны совпадать реализации методов сложения для класса Вектор и класса Матрица, с той лишь разницей, что операция temp.pVector[i] = pVector[i] + v.pVector[i]; в случае сложения векторов суммирует скаляры, а в случае сложения матриц должна суммировать вектора. В результате, реализация метода сложения матриц может быть записана следующим образом: template TMatrix { return TVector } Download 1.23 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling