Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
voidkor
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 6
1

Работа с матрицами. Ошибочка

20.09.2012, 20:53. Просмотров 406. Ответов 4
Метки нет (Все метки)

class matrix{
private: double **Matrix;
int Rows, Cells;
public: matrix(int N, int M): Rows(N), Cells(M){}
friend ostream& operator<< (ostream& stream, matrix& obj);
friend istream& operator>> (istream& stream, matrix& obj);
void input();
~matrix(){}
};

void matrix::input(){
cin.width(5);
cout.width(5);
double tmp;
for (int i = 0; i < Rows; i++){
for (int j = 0; j < Cells; j++){
cin >> Matrix[i][j];
cout << " ";
}
cout << endl;
}
}

Функция input должна заполнять ячейки матрицы. Ввод с клавиатуры. При запуске и попытке ввода, выдает ошибку доступа. Менял уровень доступа к матрице на публичный, не помогает.

Необработанное исключение по адресу 0x00944CCF в ConsoleApplication1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000.

P.S. Не вставил сюда остальные методы и куски программы потому что они работают и не нужны для решения проблемы. Ошибка конкретно в строке: cin >> Matrix[i][j];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2012, 20:53
Ответы с готовыми решениями:

Работа с матрицами
#include&lt;iostream&gt; #include &quot;math.h&quot; using namespace std; double...

Работа с матрицами
Мне необходимо заполнить матрицу размера 9 на 9 случайными числами и повернуть...

Работа с матрицами
Всем привет. У меня возникла не большая проблема. Никак не могу разобраться со...

Работа с for и матрицами
Помогите пожалуйста, есть задача: Дана матрица 8х8, нужно поделить каждый...

Работа с двухмерными матрицами
Дана квадратная матрица целых чисел размером NxM. N - нечетное число от 5 до...

4
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.09.2012, 21:02 2
Покажите конструктор или лутче весь класс в зборе.
0
voidkor
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 6
20.09.2012, 21:17  [ТС] 3
#include "stdafx.h"
#include <iostream>

using namespace std;

class matrix{
private: double **Matrix;
int Rows, Cells;
public: matrix(int N, int M): Rows(N), Cells(M){}
friend ostream& operator<< (ostream& stream, matrix& obj);
friend istream& operator>> (istream& stream, matrix& obj);
void input();
~matrix(){}
};

istream& operator>> (istream& stream, matrix& obj){
for (int i = 0; i < obj.Rows; i++){
*obj.Matrix = new double[i];
for (int j = 0; j < obj.Cells; j++){
obj.Matrix[i] = new double[j];
stream >> obj.Matrix[i][j];
cout << " ";
}
cout << endl;
}
return stream;
}

ostream& operator<< (ostream& stream, matrix& obj){
stream.width(5);
for (int i = 0; i < obj.Rows; i++){
for (int j = 0; j < obj.Cells; j++){
stream << obj.Matrix[i][j] << " ";
}
stream << endl;
}
return stream;
}

int main()
{
int N,M;
cout << "Pls, enter size first matrix (NxM): " << endl << "N: ";
cin >> N;
cout << "M: ";
cin >> M;
matrix first(N,M);
cin >> first;
return 0;
}

P.S. again: Я дурак))) Весь код нужен чтобы ошибку найти, в перегрузке походу накосячил)
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.09.2012, 22:01 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
class matrix
{ 
    double **Matrix;
    int Rows, Cells;
public:
    matrix(int N, int M);
    //matrix(int N, int M): Rows(N), Cells(M) {}
    friend ostream& operator<< (ostream& stream, const matrix& obj);
    friend istream& operator>> (istream& stream, matrix& obj);
    //void input();
    ~matrix();
};
 
matrix::matrix(int N, int M): Rows(N), Cells(M)
{
    Matrix = new double* [N];
        for (int i = 0; i < N; i++)
            Matrix[i] = new double [M];
};
 
istream& operator>> (istream& stream, matrix& obj){
    for (int i = 0; i<obj.Rows; i++)
        for (int j = 0; j<obj.Cells; j++)
        {
            cout<<"Matrix["<<i<<"]["<<j<<"]: ";
            stream >> obj.Matrix[i][j];
        }
        cout << endl;
    return stream;
}
 
ostream& operator<< (ostream& stream, const matrix& obj){
    for (int i = 0; i < obj.Rows; i++){
        for (int j = 0; j < obj.Cells; j++){
            stream << obj.Matrix[i][j] << " ";
        }
        stream << endl;
    }
    return stream;
}
 
matrix::~matrix()
{
    for (int i = 0; i< Rows; i++)
        delete [] Matrix[i];
    delete [] Matrix;
}
 
int main()
{
    int N,M;
    cout << "Pls, enter size first matrix (NxM): " << endl << "N: ";
    cin >> N;
    cout << "M: ";
    cin >> M;
    matrix first(N,M);
    cin >> first;
    cout << "Result:\n" << first << endl;
    system("pause");
    return 0;
}
1
voidkor
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 6
20.09.2012, 23:33  [ТС] 5
Спасибо большое за помощь)
Разобрался почти во всем, кроме того что сейчас ниже, а именно:
1) Перегрузка оператора >> не приносит должных результатов - с клавиатуры ничего ввести невозможно, программа сама вываливает числа.
2) Что значит оператор delete, я понимаю, но не понимаю смысла в этих квадратных скобках перед Matrix.
3) Как отформатировать потоковый вывод, к примеру, что бы вываливал на экран не: -6.25343e+0067, а нормальное число с точкой. И как отформатировать число знаков после запятой - мне больше двух не нужно.

Цитата Сообщение от yuron_477 Посмотреть сообщение
Что увидел, то исправил. Протестируйте сами. Вот
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class 
 
istream& operator>> (istream& stream, matrix& obj){
    for (int i = 0; i<obj.Rows; i++)
        for (int j = 0; j<obj.Cells; j++)
        {
            cout<<"Matrix["<<i<<"]["<<j<<"]: ";
            stream >> obj.Matrix[i][j];
        }
        cout << endl;
    return stream;
}
 
matrix::~matrix()
{
    for (int i = 0; i< Rows; i++)
        delete [] Matrix[i];
    delete [] Matrix;
}
0
20.09.2012, 23:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2012, 23:33

Работа с файлами и матрицами
Всем здравствуйте! У меня есть проблема. Имеется такое задание: В заданной...

Работа с квадратными матрицами
Помогите решить пожалуйста! 1)Дана матрица размера M ×N (N —четное...

Матрицы. Работа с матрицами
Дана матрица А размера 8*6. Найти элемент, котоpый встречается в массиве чаще...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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