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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
#1

Матрицы в ООП - C++

15.10.2013, 00:24. Просмотров 1096. Ответов 12
Метки нет (Все метки)

Здравствуйте. Приступил к изучению ООП на С++. Столкнулся с трудностями. Буду очень рад и признателен Вам за помощь.

Требуется выполнить задание:
Даны 2 матрицы с исходными заданными значениями. Необходимо создать класс "Матрица". Предусмотреть в нём методы: конструктор, деструктор, метод вывода матрицы на экран. является ли матрица единичной; а также операторы перегрузки: сложение, вычитание, умножение 2 матриц, умножение матрицы на число.

Начал разбираться. И сразу же возникла проблема "в лоб"
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <locale.h>
 
using namespace std;
 
 
class matrix
{
    int m,n;               //размерность матрицы. m - строки, n - столбцы
    double** a;        //непосредственно объявление самой матрицы А
    double** b;        //объявление матрицы В
    
public:
    
/*Каким образом можно (а, наверное, даже нужно!) инициализировать тут матрицы, т.е. 
заполнить их данными мне значениями (размерность 3х3). Насколько понимаю, это нужно 
сделать через конструктор, но размерность и сама матрица зависимы друг от друга, 
поэтому возникли сложности. Помогите, пожалуйста*/
 
    ~matrix()
    {
        cout << "Нет больше матрицы";
    }
    
 
    
    double addition()
    {
            //реализация
    }
 
    double substraction()
    {
            //реализация
    }
 
    double multiply()
    {
           //реализация
    }
 
    double multiplyBy()
    {
          //реализация
    }
};
 
int main()
{
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 00:24     Матрицы в ООП
Посмотрите здесь:

Матрицы и ООП - C++
Как эти задачи решить с помощью ООП 1. проверка матрици на симетричность относительно побочной диагонали 2. заполнение матрици по...

задание по ООП, классы, матрицы - C++
Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменением кол-ва строк и столбцов,...

Реализовать класс матрицы в ООП(есть код, но выдает ошибку) - C++
В задании нужно постpоить класс для pаботы с квадратными матрицами. Класс должен включать соответствующие поля: порядок, набор...

Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20 (ООП) - C++
1. Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20. Найти произведение ненулевых...

ООП - C++
#pragma hdrstop #pragma argsused //#include &quot;Student.hpp&quot; //#include &quot;Prof.hpp&quot; //#include &quot;Personne.hpp&quot; #include &lt;conio.h&gt; ...

програмирование ООП С++ - C++
проблема такая в Visual Studio при компиляции выскакивает такая ошибка (fatal error C1083: Не удается открыть файл включение: iostream.h:...

Игра с ООП - C++
Хочу создать игру. Есть квадратное поле. Пользователь вводит число обитателей: хищники и жертвы. Создается указанное количество таких...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 00:28     Матрицы в ООП #2
fktrctq0321, либо сделать функцию "присвоить такой ячейке такое то значение", либо передать последовательность чисел (файл с данными, ссылку на массив, например)
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
15.10.2013, 00:31  [ТС]     Матрицы в ООП #3
Цитата Сообщение от Folko Посмотреть сообщение
fktrctq0321, либо сделать функцию "присвоить такой ячейке такое то значение", либо передать последовательность чисел (файл с данными, ссылку на массив, например)
Да, я это понимаю.. Нужно вот как раз "присвоить такой ячейке такое то значение", но как тут быть (1 моя лаба на ООП) - не знаю. Напишите, пожалуйста, примерный набросок (эскиз, макет ) этой функции, если Вам несложно, а я на примере постараюсь разобраться. Спасибо.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 00:34     Матрицы в ООП #4
fktrctq0321, грубо говоря так:
C++
1
2
3
4
void inputNumber(int n, int m, int x)
{
      array[n][m] = x;
}
n, m - указание на ячейку, x - значение которое необходимо занести в матрицу
Можно еще проверку вводимых значений добавить, что бы например в матрице 3х3 нельзя было обратиться к ячейке 5,6
faustmangos
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 00:52     Матрицы в ООП #5
Создаешь конструктор
C++ (Qt)
1
2
3
4
matrix (double **arr)
{
  //Выделение динамической памяти и копирование в матрицу значений из arr
}
Ввод по 1 числу довольно трудное задание если у тебя матрица 1000х1000
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
15.10.2013, 00:59  [ТС]     Матрицы в ООП #6
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
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <locale.h>
 
using namespace std;
 
 
class matrix
{
    //int m,n;           //размерность матрицы. m - строки, n - столбцы
    double** a;        //непосредственно объявление самой матрицы А
    double** b;        //объявление матрицы В
    
public:
    
    void InputMatrixA(int x)
    {
        for (int i=0; i<3; i++)
            for (int j=0; j<3; j++)
            {
                this->a[i][j]=x;
            }
    }
 
    
};
 
void main()
{
    setlocale(LC_ALL, "Rus");
    matrix *mt=new matrix();
 
 
}
При компиляции не запрашивает число. В чём ошибка?

Добавлено через 5 минут
Цитата Сообщение от faustmangos Посмотреть сообщение
Создаешь конструктор
C++ (Qt)
1
2
3
4
matrix (double **arr)
{
  //Выделение динамической памяти и копирование в матрицу значений из arr
}
Ввод по 1 числу довольно трудное задание если у тебя матрица 1000х1000
матрица 3х3
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 01:03     Матрицы в ООП #7
fktrctq0321, а где конструктор? А число он не спрашивает, потому что вы не вызвали функцию InputMatrixA.
C++
1
2
matrix *mt=new matrix();
mt->InputMatrixA(5);
Тогда надо. И в конструкторе надо массивы объявить.

А конструктор в паблике:
C++
1
2
3
4
matrix(int n, int m)
{
// объявить массивы нужного размера
}
И потом удалить mt не забудьте для порядка)
faustmangos
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 01:04     Матрицы в ООП #8
Конструктор - это функция не имеющая возвращаемого значения, в твоем случае вызывается конструктор по умолчанию который не принимает аргументов и пустой сам по себе т.е. matrix()
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
15.10.2013, 23:45  [ТС]     Матрицы в ООП #9
Цитата Сообщение от Folko Посмотреть сообщение
fktrctq0321, а где конструктор? А число он не спрашивает, потому что вы не вызвали функцию InputMatrixA.
C++
1
2
matrix *mt=new matrix();
mt->InputMatrixA(5);
Тогда надо. И в конструкторе надо массивы объявить.

А конструктор в паблике:
C++
1
2
3
4
matrix(int n, int m)
{
// объявить массивы нужного размера
}
И потом удалить mt не забудьте для порядка)
Помогите, пожалуйста, для начала задать матрицы.
Извините за "ламерство", но ООП мне даётся пока что с очень большим трудом.
В чём ошибка?

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <locale.h>
 
using namespace std;
 
 
class Matrix
{     
    double a[3][3];        
    double b[3][3];      // можно ли так объявить вообще? 
 
public:
 
    void set_MatrixA(int x)
    {
        for (unsigned short i=0; i<3; i++)
            for (unsigned short j=0; j<3; j++)
            {
                this->a[i][j]=x;
            }
    }
 
    Matrix::Matrix ()
    {
        int x;
        cin>>x;
        this->set_MatrixA(x);
        
    }
 
/*Подобным образом запрашивает лишь одно число (вместо положенных 9)*/
    
};
 
int main()
{
    setlocale(LC_ALL, "Rus");
    Matrix r; 
 
}
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 23:53     Матрицы в ООП #10
fktrctq0321, а подробнее, что вы хотели реализовать? Заполнение всех ячеек массива/объявление двумерного массива произволных размеров или что то еще?
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
15.10.2013, 23:55  [ТС]     Матрицы в ООП #11
Цитата Сообщение от Folko Посмотреть сообщение
fktrctq0321, а подробнее, что вы хотели реализовать? Заполнение всех ячеек массива/объявление двумерного массива произволных размеров или что то еще?
хочу заполнить числами все ячейки массива (их 9 получается), чтобы в последствии с матрицей производить нужные операции. Но реализовать сам ввод не получается
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
16.10.2013, 00:02     Матрицы в ООП #12
fktrctq0321, сек, напишу код

Добавлено через 5 минут
fktrctq0321,
При заполнении одиночными числами я бы добавил в класс:

C++
1
2
3
4
void setMatrix (int n, int m, int x)
{
    a[n][m] = x;
}
а в функции main сделал бы такой код:

C++
1
2
3
4
5
6
7
8
for (int i=0;i<n;i++)
    for (int j=0;j<m;j++)
    {
        cout << "a[" << i << "][" << j << "]:" << endl;
        int temp;       
        cin >> temp;
        mymatrix->setMatrix(i,j,temp);
    }
не скажу, что это самое изящное решение, но удобно. mymatrix - экземпляр класса matrix
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 00:09     Матрицы в ООП
Еще ссылки по теме:

ООП. Полиморфизм - C++
Мальчики, учусь на МехМате. Для сдачи зачёта по ООП необходимо написать последнюю программу: Задание: полиморфизм Указание: во всех...

ООП в играх - C++
Доброго времени суток. Знаю ООП в пределах теории и задачек из учебников, но на реальных проектах - туговато. Даже не то чтобы...

Вопрос по ООП - C++
Вот код class time { private: int hours; int minutes; public: int sum_time(time object, days day); ...

Инкапсуляция в ООП и C++ - C++
Вы используете в классе геттеры и сеттеры (функции). Отделяйте спецификацию от реализации (инкапсуция в каком-то роде). Т.е. header file...

ООП.Наследование - C++
Здравствуйте.Помогите отредактировать код. Прикрепил скрин задания(Вверху,то как примерно должно получиться решение,ниже само задание). Не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fktrctq0321
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 37
16.10.2013, 00:09  [ТС]     Матрицы в ООП #13
Цитата Сообщение от Folko Посмотреть сообщение
fktrctq0321, сек, напишу код

Добавлено через 5 минут
fktrctq0321,
При заполнении одиночными числами я бы добавил в класс:

C++
1
2
3
4
void setMatrix (int n, int m, int x)
{
    a[n][m] = x;
}
а в функции main сделал бы такой код:

C++
1
2
3
4
5
6
7
8
for (int i=0;i<n;i++)
    for (int j=0;j<m;j++)
    {
        cout << "a[" << i << "][" << j << "]:" << endl;
        int temp;       
        cin >> temp;
        mymatrix->setMatrix(i,j,temp);
    }
не скажу, что это самое изящное решение, но удобно. mymatrix - экземпляр класса matrix
огромнейшее спасибо)
буду разбираться дальше..
если будут проблемы, разрешите снова обратиться к помощи форума, в частности Вас?
Yandex
Объявления
16.10.2013, 00:09     Матрицы в ООП
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru