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

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

Войти
Регистрация
Восстановить пароль
 
Alex S
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 5
#1

Знакомство с классами, попытка реализации класса матриц - C++

18.11.2012, 11:36. Просмотров 937. Ответов 4
Метки нет (Все метки)

Собственно выдает следующую вещь
"Необработанное исключение в "0x00411805" в "class_test_inheritance.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc"."
хотелось бы понять почему.
код:

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
#include <iostream>
using namespace std;
 
class Matrix 
{
private:
    int s_columns;
    int s_lines;
    int **matr;
public:
    Matrix(int n, int m);
    ~Matrix();
    //Matrix(Matrix &obj);
    void print();
    void get();
};
 
Matrix::Matrix(int n, int m)
{
    s_lines = n;
    s_columns = m;
    int **matr = new int *[s_lines]; 
    for (int i = 0; i < s_lines; i++) 
        matr[i] = new int [s_columns];
}
 
Matrix::~Matrix()
{
    for (int i = 0; i < s_lines; i++)
        delete [] matr [i];
    delete [] matr;
}
 
void Matrix::print()
{
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
            cout << matr [i][j] << " ";
        cout << endl;
    }
}
 
void Matrix::get()
{
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
        {
            cin >> matr [i][j];
        }
    } 
    
}
 
int main()
{
    system("cls");
    Matrix A(3,4);
    A.get();
    A.print();
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 11:36     Знакомство с классами, попытка реализации класса матриц
Посмотрите здесь:

Попытка разобраться с классами в C++ - C++
Доброго времени суток Читаю книгу Дейтел С++ дошел до классов и в первом же упражнении впал в ступор Помогите кто чем сможет Текст...

Знакомство с наследованием. Вызов конструктора базового класса - C++
В инете немного почиатл про наследование и решил сразу перейти к практике Есть два класа point и apoint вот хидер #ifndef...

Задача с классами. Программа с использованием класса Employee - C++
Задача: Напишите программу с использованием класса Employee, которая создает два объекта класса Employee, устанавливает значение членов...

Работа с классами: массив объектов класса Complex - C++
Здравствуйте,нужна помощь,не знаю,как из класса massiv передать значения (это 4 числа) для обработки в класс Complex.В классе massiv...

работа с классами(как перебрать все объекты класса) - C++
Здравствуйте! Я начинающий программист..... может и не программист вовсе. Но мне необходимо сделать такую задачу. С классами начала...

Трудности в реализации класса - C++
Не могу понять, почему не работают конструкторы класса... Прошу понятного объяснения=) вот код 1 файл #ifndef ___MAS #define ___MAS...

код реализации класса вектор - C++
привет!!!!!!! поделитесь пожалусто кодом реализации класса вектор!!!!!! пожалусто........ нужно к завтрашнему(((99:help::'(

Отделение интерфейса класса от реализации - C++
Осваиваю раздел одной книги &quot;Отделение интерфейса класса от реализации&quot;. То что получилось можно и нужно скачать по адресу...

Ошибки в реализации класса Vector3D - C++
Здравствуйте. Помогите дурачку. Создать класс Vector3D. Реализовать: сложение векторов, скалярное умножение векторов, умножение вектора...

Детали реализации конструктора класса - C++
Есть конструктор условного класса картинки и я не совсем понимаю нескольких вещей: #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Идеи реализации класса Menu - C++
Добрый день. В общем хочу разработать шаблонный класс Menu, чтобы постоянно не писать switch{}, но не знаю, как лучше сделать, суть в том,...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.11.2012, 12:12     Знакомство с классами, попытка реализации класса матриц #2
22 строка надо
C++
1
matr = new int*[s_lines]
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
18.11.2012, 12:14     Знакомство с классами, попытка реализации класса матриц #3
конструктор копирования, оператор присвоения
Alex S
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 5
18.11.2012, 21:29  [ТС]     Знакомство с классами, попытка реализации класса матриц #4
Спс, конструктор копирования дописал, вроде работает. С оператором присвоения не совсем разобрался, получился такой вариант но он работает для одинаковых размеров объектов. Если размеры А задать больше В то возникают ошибки.
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
#include <iostream>
using namespace std;
 
class Matrix 
{
private:
    int s_columns; 
    int s_lines;  
    int **matr; 
public:
    Matrix(int n, int m); 
    ~Matrix(); 
    Matrix(Matrix &obj); 
    Matrix &operator = (const Matrix &obj);
    void print(); 
    void get(); 
};
 
Matrix::Matrix(int n, int m)
{
    s_lines = n;
    s_columns = m;
    
    matr = new int*[s_lines];
    for (int i = 0; i < s_lines; i++) 
        matr[i] = new int [s_columns];
}
 
Matrix::~Matrix()
{
    for (int i = 0; i < s_lines; i++)
        delete [] matr [i];
    delete [] matr;
}
 
void Matrix::print()
{
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
            cout << matr [i][j] << " ";
        cout << endl;
    }
}
 
void Matrix::get()
{
    cout << "Please enter the elements of the matrix: "<< endl;;
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
        {
            cout << "M["<<i<<"]["<<j<<"] = ";
            cin >> matr [i][j];
        }
    } 
}
 
Matrix::Matrix(Matrix &obj)
{
    s_columns = obj.s_columns;
    s_lines = obj.s_lines;
 
    matr = new int*[s_lines];
    for (int i = 0; i < s_lines; i++) 
        matr[i] = new int [s_columns];
 
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
        {
            matr [i][j] = obj.matr[i][j];
        }
    } 
 
}
 
Matrix &Matrix::operator = (const Matrix &obj)
{
    if (this == &obj)
        return *this;
    s_columns = obj.s_columns;
    s_lines = obj.s_lines;
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
        {
            matr [i][j] = obj.matr[i][j];
        }
    } 
    return *this;
}
 
int main()
{
    system("cls");
    Matrix A(3,2);
    A.get(); 
    cout << "A:"<< endl;
    A.print();
    Matrix B(2,2); 
    B.get();
    cout << "B:"<< endl;
    B.print();
    B = A;  
    cout << "posle vipolneniya prisvaivaniya, B:"<< endl;
    B.print();
    system("pause");
    return 0;
}
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
18.11.2012, 21:37     Знакомство с классами, попытка реализации класса матриц #5
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
Matrix &Matrix::operator = (const Matrix &obj)
{
    if (this == &obj)
        return *this; 
    if ((s_columns != obj.s_columns)||(s_lines != obj.s_lines)){
        for (int i = 0; i < s_lines; i++) 
            delete[] matr[i]
        delete[] matr;
 
        s_columns = obj.s_columns;
        s_lines = obj.s_lines;
 
        matr = new int*[s_lines];
        for (int i = 0; i < s_lines; i++) 
           matr[i] = new int [s_columns];
      }
    for (int i = 0; i < s_lines; i++)
    {
        for (int j = 0; j < s_columns; j++)
        {
            matr [i][j] = obj.matr[i][j];
        }
    } 
    return *this;
}
Yandex
Объявления
18.11.2012, 21:37     Знакомство с классами, попытка реализации класса матриц
Ответ Создать тему
Опции темы

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