@seroukhovigor

Реализовать класс на C++, матрицы

Есть программки матриц (каждая отдельная) на C++, такие как - сложение/вычитание, умножение, транспонирование, обратная матрица. Нужно их запилить в класс.
С ООП, пока только начал. Но готовый класс нужно сдать через 3 дня. Помогите реализовать класс, хотя бы несколько строк по оформлению кода (методы и их аргументы (а реализацию метода, могу сам написать), и т.п.)
Помогите пожалуйста.
  • Вопрос задан
  • 11019 просмотров
Решения вопроса 1
#include <stdexcept>

using namespace std;

class Matrix
{
protected:
	double *matrix;
	unsigned size_x, size_y;
	
public:
	Matrix()
	{
		matrix = NULL;
		size_x = size_y = 0;
	}
	
	Matrix(unsigned sz_x, unsigned sz_y)
	{
		matrix = new double[sz_x * sz_y];
                            size_x = sz_x; size_y = sz_y;
	}
	
	/** Во всех операциях, где участвуют две матрицы нужно проверять их совместимость по размеру **/
	
	Matrix& operator+(Matrix &b)
	{
		
	}
	
	Matrix& operator-(Matrix &b)
	{
		
	}
	
	Matrix& operator*(Matrix &b)
	{
		
	}
	
	double* operator[](unsigned index)
	{
		if(index > sz_y)
			throw out_of_range("Index is out of range");
		
		return &matrix[index * sz_x];
	}
	
	Matrix& transpose()
	{
	
	}
	
	Matrix& reverse()
	{
	
	}
};


По поводу доступа к элементам - оператор [] возвращает строку матрицы, т.е. при доступе к элементу матрицы - my_matrix[<номер_строки>][<номер_столбца>], первые скобки возвращают кусок массива, который начинается с необходимой строки (здесь индекс контролируем), а вторые - собственно элемент (здесь уже индекс неконтролируем). Если нужен полный контроль - тогда двойной массив и функция double get(unsigned i, unsigned j) {}. Если это не так важно, то можно так, как указано.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы