Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Вопрос 2.3. Структуры хранения матриц специального вида.




 

template <class ValType> class TVector { protected:

ValType *pVector;

int Size; // размер вектора

int Startlndex; // индекс первого элемента вектора public:

TVector(int s=10, int si=0); // (#01)

TVector(const TVector &v); // конструктор копирования (#J11)

-TVector(); // (#02)

int GetSize() { return Size; } // размер вектора (#0)

int GetStartIndex() { return Startlndex; } // индекс первого элемента (#0) ValType & GetValue (int pos); // доступ с контролем индекса(#Г1)

ValType & operator[] (int pos); // доступ (#П2)

mt operator==(const TVector &v); // сравнение (#ПЗ)

TVector & operator= (const TVector &v); 11 присванивание (#03)

// скалярные операции

TVector operator+ (const ValType &val); // прибавить скаляр (#Л2)

TVector operator- (const ValType &val); // вычесть скаляр (#C1)

TVector operator* (const ValType &val); // умножить на скаляр (#C2)

// векторные операции

TVector operator+ (const TVector &v); // сложение (#C3)

TVector operator- (const TVector &v); // вычитание (#C4!

TVector operator* (const TVector &v); // скалярное произведение (#C5) // ввод-вывод

friend istream & operator»! istream Sin, TVector &v) { (#П4)

for (int i=0; i < v.Size; i++) in» v.pVector[ i ]; // SKIP_0N

return in; // SKIP_0FF

}

friend ostream & operator<<(ostream &out, const TVector &v) { (#C6)

for (int i=0; i < v.Size; i++) out «v.pVector[i] «* '; // SKIP_0N return out; // SKIP_0FF

}

};

// Верхние треугольные матрицы

template <class ValType>

class TMatrix: public TVector<TVector<ValType> > { public:

TMatrix(int s=10); // (#01)

TMatrix(const TMatrix &mt); // копирование (#Л1)

TMatrix(const TVector<TVector<ValType> > &mt); // преобразование типа (#Л2 TMatrix & operator== (const TMatrix &mt); // сравнение (#П1)

TMatrix & operator= (const TMatrix &mt); // присваивание (#02)

TMatrix operators- (const TMatrix &mt); // сложение (#П2)

TMatrix operator- (const TMatrix &mt); // вычитание (#C1)

TMatrix operator* (const TMatrix &mt); // умножение (#C2)

// ввод / вывод

friend istream & operator>>(istream &in, TMatrix &mt) { //(#ПЗ)

for (int i=0; Kmt.Size; i++) // SKIP_0N

in» mt.pVector[i]; П SKIP_0FF

return in;

}

friend ostream & operator<<(ostream &out, const TMatrix &mt) { //(#C3)

for (int i=0; i<mt.Size; i++) // SKIP_0N

out «mt.pVector[i] «endl; // SKIP_0FF

return out;

}

};






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных