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

На основе класса Vector разработать класс Matrix - C++

Восстановить пароль Регистрация
 
Snaiper2king
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 3
10.06.2014, 20:11     На основе класса Vector разработать класс Matrix #1
На основе класса Vector разработать класс Matrix (матрица, физически представляющая собой вектор, состоящий из заданного числа векторов). Реализовать метод сравнения двух матриц (==, !=).

вот мой класс вектор:

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <stdlib.h> // Отсюда берём rand()
#include <time.h> // Здесь находится time()
using namespace std;
 
class vector{
private:
    
    int *_v;//
    int _size; //размер массива
    
public:
    vector(){};
vector(unsigned int vX) 
 { 
    _size=vX; 
    if(_size < 0 ) 
    {
        cerr <<"Error!"<<endl;
        getch();
        exit(1);
    } 
    else 
    {
        srand(time(NULL));
        _v = new int[_size];
        for(int i=0; i < _size; i++)
        {
            _v[i]=rand()%99;
        }
    }
 } 
void showVector();
void SetSize(int x);
void ShowSize();
int GetSize();
void showElement(unsigned int a);
vector operator + (vector a);
vector operator - (vector a);
double abs();
double operator*(vector b);
 
};
void vector::showVector()
{
    for(int i = 0; i <_size; i++)
    {
        cout << this->_v[i] << " ";
    }
}
 
void vector::showElement(unsigned int a)
{       
        if(a > _size)
        {
            cout << "Error";
        } else { 
            cout << this->_v[a-1] << endl;
        }
 
}
void vector::ShowSize()
{
    cout<<"size =" <<_size<<endl;
}
 
vector vector::operator + (vector a)
{
 int s = (_size < a._size) ? _size : a._size;
 vector temp(s); // Создание временного объекта
 for(int i = 0; i < s; i++)
 temp._v[i] = temp._v[i] + a._v[i];
 return temp; // Возврат временного объекта
}
 
 
vector vector::operator - (vector a)
{
 int s = (_size < a._size) ? _size : a._size;
 vector temp(s); // Создание временного объекта
 for(int i = 0; i < s; i++)
 temp._v[i] = temp._v[i] - a._v[i];
 return temp; // Возврат временного объекта
 
}
int vector::GetSize()
{
    return _size;
}
 
double vector::abs() //Модуль 
{
 double sum=0;
 for(int i = 0; i < this->_size; i++)
 {
  sum +=  this->_v[i] ;
 }
 return sqrt(sum);
}
 
void vector::SetSize(int s)
{
    _size=s;
}
double vector::operator*(vector b) //Скалярное произв.
{
 double sum=0;
 for(int i = 0; i < this->_size; i++)
 {
  sum +=  this->_v[i] * b._v[i];
 }
 return sum;
}
А вот я сделал класс матрица:

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
class Matrix{
    vector* v;
    int _count;
public:
    Matrix(int d)
    {
        int s;
        _count=d;
        vector* v = new vector[d];
        for(int i=0; i<d;i++)
        {
            cin >>s;
            v[i].SetSize(s);
        }
        for(int i=0; i<d;i++)
        {
            v[i].ShowSize();
            
        }
    }
    vector* operator->(){return v;}
     bool operator ==(Matrix& m1)
     {
        int x,y;
        if(this->_count!=m1._count)
            return false;
        else
            for(int i=0;i<m1._count;i++)
            {
                x=v[i].GetSize();
                
                y=m1.v[i].GetSize();
                if(x!=y)
                    return false;
                else return true;
            }
     }
    
        
    };

Все вроде нормально, но когда пытаюсь сравнить две матрицы, то программа вылетает. Как я понял на:

C++
1
2
x=v[i].GetSize();
y=m1.v[i].GetSize();
Помогите дорешать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 20:11     На основе класса Vector разработать класс Matrix
Посмотрите здесь:

C++ Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector
На основе созданного класса OPERATION, создать класс-потомок OP_SUMMATOR, который производит сложение двух полей C++
C++ Организовать на основе существующего класса произвольный класс
Разработать класс Vector – геометрический вектор произвольной размерности C++
C++ Разработать класс Matrix - матрица
класс наследник на основе базового класса C++
Класс вектор на основе класса Complex. Найти угол между векторами C++
C++ Разработать производный от абстрактного класса Figure класс и класс, производный от производного

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
10.06.2014, 21:20     На основе класса Vector разработать класс Matrix #2
вот мой класс вектор:
vector(){}; ничего не инициализирует, SetSize ни у чего размер не меняет (хотя пишет в _size что поменял). vector(unsigned int vX) пытается присвоить беззнаковое целое числу со знаком, из-за чего компилятор должен был как минимум выругаться варнингом (риск переполнения). Но это уже мелочи.
Yandex
Объявления
10.06.2014, 21:20     На основе класса Vector разработать класс Matrix
Ответ Создать тему
Опции темы

Текущее время: 02:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru