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

Нарушение прав доступа при чтении по адресу 0xCDCDCDCD - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
Vlad1994
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 11
02.04.2013, 21:28     Нарушение прав доступа при чтении по адресу 0xCDCDCDCD #1
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "stdafx.h"
#include <iostream>
#include <time.h>
 
using namespace std;
 
 
class CMatr
{
protected:
    int **V, Size;
public:
    CMatr();
    CMatr(int);
    CMatr(const CMatr &);
    ~CMatr();
    void Set();
    void Get();
    CMatr operator + (const CMatr &);
    CMatr operator - (const CMatr &);
    const CMatr &operator = (const CMatr &);
};
 
CMatr::CMatr()
{
    cout<<"OLOLOLOLO"<<endl;
}
 
CMatr::CMatr(int Size)
{
    this->Size = Size;
    V = new int *[Size];
    for (int i = 0; i < Size; i++)
    {
        *(V + i)=new int [Size];
    for (int j = 0; j< Size; j++)
        
        *((*(V + i))+j)=0;
 
    }
}
 
CMatr::CMatr(const CMatr &Vec)
{
    Size=Vec.Size;
    V = new int*[Size];
    for (int i = 0; i < Size; i++)
    {
        *(V + i)=new int [Size];
        for (int j = 0; j < Size; j++)
         *((*(V + i))+j) =  *((*(Vec.V + i))+j);
    }
}
 
CMatr::~CMatr()
{
    for ( int i = 0 ; i < Size; i ++ )
    delete[] V [i];
    delete [] V;
}
 
void CMatr::Set()
{
    for (int i = 0; i < Size; i++)
    {
        for (int j = 0; j < Size; j++)
        *((*(V + i))+j)=rand()%10 ;
    }
}
void CMatr::Get()
{
     for (int i = 0; i < Size; i++)
    {
        for (int j = 0; j < Size; j++)
        {
        cout<<"\t>"<<*(*(V+i) + j);
        }
        cout<<endl;
    }
}
 
const CMatr &CMatr::operator = (const CMatr &Right)
{
    if (&Right == this) return *this;
    delete[] V;
    V = new int*[Size = Right.Size];
    for (int i = 0; i < Size; i++)
    {
        *(V + i)=new int [Size];
        for (int j = 0; j< Size; j++)
        {
        *((*(V + i))+j) = *((*(Right.V + i))+j);
         return *this;
        }
    }
}
 
CMatr CMatr::operator + (const CMatr &Right)
{
    CMatr T(Right.Size);
    for (int i = 0; i < Right.Size; i++)
    {
        for ( int j = 0; j < Right.Size; j++)
        {
        *((*(T.V + i))+j) = *((*(V+i))+j)+*((*(Right.V + i))+j);
         return T;
        }
    }
}
 
 
int main()
{
    srand(time_t(NULL));
    setlocale (LC_ALL,"RUS");
 
    int Size;
    
    cout << "Введите ранг матрици: ";
    cin >> Size;
    CMatr A(Size), B(Size), C(Size);
    A.Set();
    B.Set();
    
    cout << "матрица А: \n";
    A.Get();
    cout << "матрица В: \n";
    B.Get();
   
    C = A + B;
   
    cout << "матрица С: \n";
    C.Get();
    
    system("pause");
    return 0;
}
метод Get фигово работает, не хочет выводить матрицу С. выдаёт ошибку нарушение прав доступа при чтении по адресу 0xCDCDCDCD. Помогите плиз=)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
02.04.2013, 21:38     Нарушение прав доступа при чтении по адресу 0xCDCDCDCD #2
Цитата Сообщение от Vlad1994 Посмотреть сообщение
метод Get фигово работает
Он тут не причем.
Вот Вам исправленный фрагмент кода, найдите два отличия от Вашего:
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
const CMatr &CMatr::operator = (const CMatr &Right)
{
    if (&Right == this) return *this;
    delete[] V;
    V = new int*[Size = Right.Size];
    for (int i = 0; i < Size; i++)
    {
        *(V + i)=new int [Size];
        for (int j = 0; j< Size; j++)
        {
        *((*(V + i))+j) = *((*(Right.V + i))+j);         
        }
    }
     return *this;
}
 
CMatr CMatr::operator + (const CMatr &Right)
{
    CMatr T(Right.Size);
    for (int i = 0; i < Right.Size; i++)
    {
        for ( int j = 0; j < Right.Size; j++)
        {
            *((*(T.V + i))+j) = *((*(V+i))+j)+*((*(Right.V + i))+j);
        }
    }
     return T;
}
Vlad1994
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 11
02.04.2013, 21:45  [ТС]     Нарушение прав доступа при чтении по адресу 0xCDCDCDCD #3
спс, щас найду=)

Добавлено через 1 минуту
ахаха блин=)ахахаха
Lomin
46 / 46 / 5
Регистрация: 20.04.2013
Сообщений: 126
23.06.2013, 14:51     Нарушение прав доступа при чтении по адресу 0xCDCDCDCD #4
Ответ: из 106 строки return T; поместить между 108 и 109 строками
Yandex
Объявления
23.06.2013, 14:51     Нарушение прав доступа при чтении по адресу 0xCDCDCDCD
Ответ Создать тему
Опции темы

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