Форум программистов, компьютерный форум CyberForum.ru

Разработать класс Матрица - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс "Список окон" http://www.cyberforum.ru/cpp-beginners/thread1718825.html
Здравствуйте, есть довольно большое задание, код которого почти полностью представлен ниже: Задание 1. Создать класс Прямоугольник, который имеет координаты верхнего левого и нижнего правого угла, цвет фона. 2. Определить конструкторы инициализации, копирования, деструкторы и методы для изменения и чтения значений полей этого класса. 3. Перегрузить операцию ++ для...
C++ Не получается найти символ в массиве На 71 строчке появляется ошибка сегментирования. При попытке показать массив в функции readTxt() всё отображается. #include <iostream> #include <fstream> #include <string> using namespace std; class clFAct { public: clFAct(); http://www.cyberforum.ru/cpp-beginners/thread1718818.html
C++ Создать иерархию классов " Вступительные экзамены"
Здравствуйте, я только начал изучать классы в с++, по этому ещё не очень разбираюсь в них, но мне нужно сделать задачу: 1.Определить иерархию системы, которая заключается в построении базового абстрактного класса и нескольких обоснованных производных или связанных классов. Подать иерархию с помощью UML-Диаграммы. 2.Определить в базовом абстрактном классе чисто виртуальную функцию. 3.Каждый...
C++ Из наибольших элементов найти наименьший и удалить строку. Код прилагается
Помогите!!! Из наибольших элементов найти наименьший и удалить ту строку, которой он принадлежит. Помогите, не могу понять как это делается:help: #include <iostream> #include <cstdlib>// Для rand #include <iomanip>// Для setw #include <ctime> //Для time #include<conio.h> using namespace std;
C++ Заполнение вектора класса внутри самого класса http://www.cyberforum.ru/cpp-beginners/thread1718796.html
class A { private: int a; public: A() { a = 0; }; A get(vector <A>* vec)
C++ Вывести слова в которых количество символов не больше заданного Вывести слова, в которых кол-во символов равно или меньше N #include <iostream> #include <conio.h> #include <string> using namespace std; int main() { string st = "qwerty da z"; cout<<"string: "<<st; int b=st.size(); подробнее

Показать сообщение отдельно
igdev
9 / 9 / 2
Регистрация: 22.04.2016
Сообщений: 75
Завершенные тесты: 1
04.05.2016, 22:26  [ТС]     Разработать класс Матрица
Почему void? Эти же функции возвращают *this ?
Цитата Сообщение от zss Посмотреть сообщение
void Matrix::set_ZERO() // void!!!!
void Matrix::inMat(); * * // *тоже надо *void!!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Ввод данных
Matrix Matrix::inMat()
{
    int i,j;
    cout << "Введите матрицу " << endl;
    cout << rows << 'X' << colls << ":" << endl;
 
    for (i = 0 ; i < rows; i++)
    {
        for (j = 0; j < colls; j++)
        {
            cin >> mat[i][j];
        }
    }
    return *this;
}
C++
1
2
3
4
5
6
7
8
9
// Обнуление матрицы
Matrix Matrix::set_ZERO()
{
    int i,j;
    for (j = 0; j < colls; j++)
        for (i = 0; i < rows; i++)
        mat[i][j] = 0;
    return *this;
}
Добавлено через 18 минут
zss,
Еще есть один очень неприятный баг, который я никак не могу выловить отладчиком.
По найденным мною примеров перегрузки операторов, все должно работать в следующем виде:
C++
1
С = А * В;
,где С пустая матрица, которой присваивается результат умножения двух непустых матриц А и В.
Однако, компилятор выдает мне следующую ошибку:
no match for 'operator=' (operand types are 'Matrix' and 'Matrix')

Если же написать так:
C++
1
Matrix C = A * B;
то все работает.

Как избавится от данного костыльного решения?

P.S.Свою функцию main также прилагаю.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main()
{
    setlocale(0,"");
    int i;
 
    Matrix  F(4), A( 4, 4 ), B( 4, 4 ), С(4, 4), G;
    cout << "Матрица F" << endl;
    F.printMatrixOne();
    cout << "Матрица G" << endl;
    G.printMatrix();
    cout << "Матрица А" << endl;
    A.printMatrix();
    cout << "Матрица B" << endl;
    B.printMatrix();
    C = A * B; // Здесь ошибка
    cout << "Матрица С" << endl;
    C.printMatrix();
    cout << "Введите множитель i = " << endl;
    cin >> i;
    C * i;
    cout << "Матрица С" << endl;
    C.printMatrix();
 
    return 0;
}
 
Текущее время: 08:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru