Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2018, 22:46   #1
Jura_Franasyuk
 
Регистрация: 25.10.2017
Сообщений: 8
По умолчанию Перегрузка оператора = (Matrix = double) - С++

Помогите реализовать присвоение всем элементам матрицы значения (Matrix = double)

Код:
Matrix & Matrix::operator=(const double & other)
{
	dealloc();
	double ** matrix = (double**)alloc(rows, cols);

	for (size_t i = 0; i < rows; i++) {
		for (size_t j = 0; j < cols; j++) {
			matrix[i][j] = other;
		}
	}

	return *this;
}
Matrix.h

Код:
#pragma once

using namespace std;

class Matrix
{
public:
	Matrix();
	Matrix(const size_t, const size_t);
	Matrix(const Matrix &);
	~Matrix();

	const size_t & getRows();
	const size_t & getCols();

	int ** alloc(const size_t, const size_t);
	void dealloc();

	int & operator()(const size_t, const size_t);
	Matrix & operator=(const double &);
	Matrix & operator=(const Matrix &);
private:
	int ** matrix;
	size_t cols;
	size_t rows;
};
Matrix.cpp

Код:
#include "stdafx.h"
#include "Matrix.h"

Matrix::Matrix()
{
	matrix = alloc(0, 0);
}

Matrix::Matrix(const size_t rows, const size_t cols)
{
	matrix = alloc(rows, cols);
}

Matrix::Matrix(const Matrix & other)
{
	matrix = alloc(other.rows, other.cols);

	for (int i = 0; i < other.rows; i++) {
		for (int j = 0; j < other.cols; j++)
		{
			matrix[i][j] = other.matrix[i][j];
		}
	}
}

Matrix::~Matrix()
{
	dealloc();
}

const size_t & Matrix::getRows() { return rows; }

const size_t & Matrix::getCols() { return cols; }

int ** Matrix::alloc(const size_t rows, const size_t cols)
{
	this->rows = rows;
	this->cols = cols;

	int ** new_matrix = new int * [rows];
	for (size_t i = 0; i < rows; i++) {
		for (size_t j = 0; j < cols; j++) {
			new_matrix[i] = new int [cols];
		}
	}

	return new_matrix;
}

void Matrix::dealloc()
{
	if (matrix != nullptr)
	{
		for (size_t i = 0; i < rows; i++) {
			delete[] matrix[i];
		}
		delete[] matrix;
	}
}

int & Matrix::operator()(const size_t rows, size_t cols)
{
	return matrix[rows][cols];
}

Matrix & Matrix::operator=(const double & other)
{
	dealloc();
	double ** matrix = (double**)alloc(rows, cols);

	for (size_t i = 0; i < rows; i++) {
		for (size_t j = 0; j < cols; j++) {
			matrix[i][j] = other;
		}
	}

	return *this;
}

Matrix & Matrix::operator=(const Matrix & other)
{
	if (rows != other.rows || cols != other.cols) { exit(1); }

	if (this != & other)
	{
		for (size_t i = 0; i < rows; i++) {
			for (size_t j = 0; j < cols; j++) {
				matrix[i][j] = other.matrix[i][j];
			}
		}
	}

	return *this;
}
Jura_Franasyuk вне форума Ответить с цитированием
Старый 02.05.2018, 05:00   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Что за бред, как в матрицу целых чисел впихнуть double?
По уму надо весь код под double переписывать
Black Fregat вне форума Ответить с цитированием
Старый 02.05.2018, 14:11   #3
Jura_Franasyuk
 
Регистрация: 25.10.2017
Сообщений: 8
По умолчанию

Хз, такое задание в лабораторной
Jura_Franasyuk вне форума Ответить с цитированием
Старый 02.05.2018, 14:46   #4
Jura_Franasyuk
 
Регистрация: 25.10.2017
Сообщений: 8
По умолчанию

22. АТД  двухмерный массив (матрица) вещественных чисел. Допол-нительно перегрузить следующие операторы:
() - доступ по индексу;
= - присвоить всем элементам матрицы значение (matr=double);
+ - сложение матриц;
+ - сложить матрицу с числом (matr+double).
Jura_Franasyuk вне форума Ответить с цитированием
Старый 02.05.2018, 16:28   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну так начните с чтения условия.
Цитата:
Сообщение от Jura_Franasyuk Посмотреть сообщение
22. АТД  двухмерный массив (матрица) вещественных чисел.
Вы даже первое предложение неосилили?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора ++ Svorobey C# (си шарп) 7 04.11.2013 13:07
C++ Перегрузка оператора += и >> Jane-sad Помощь студентам 4 01.03.2013 15:38
c# перегрузка оператора * world12_tk Помощь студентам 1 06.05.2012 01:04
Перегрузка оператора (C++) Sergey S Помощь студентам 6 08.01.2012 13:01
перегрузка оператора ++ nhr Помощь студентам 0 04.05.2011 21:20