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

Половина двумерного массива теряет значения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MinGW+MSYS - как грамотно пользоваться? http://www.cyberforum.ru/cpp-beginners/thread636062.html
Вопрос: Добрый день, уважаемые форумчане! У меня такой вопрос: Пытаюсь собрать PostgreSQL под Windows, используя связку MinGW+MSYS. Раньше не пользовался MSYS, по сему вопрос от неопытности. Итак, скачал исходники, запустил configure, процесс пошёл... и тут же возникает проблема отсутствия zlib. Её тоже скачал, собрал (благо там-то всё просто). Снова запускаю ./configure для PostgreSQL, но...
C++ Передвижение стрелками Как переключаться между элементами списка в консоли с помощью стрелок? И если кто знает подскажите где можно обучиться делать оконные приложения? http://www.cyberforum.ru/cpp-beginners/thread636052.html
C++ Не понятный вызов деструктора
Здравствуйте. Ситуация такая, есть класс MyClass к примеру, и при таком коде: //разные инклюды MyClass var; int WinMain(...) { var = MyClass(/*аргументы*/); //далее цикл проверки сообщений и прочего, короче функция не заканчивается return 0; }
Перемещение файлов C++
Можно как нибудь программно переместить файл с расширением txt?
C++ Не работает jsoncpp http://www.cyberforum.ru/cpp-beginners/thread636038.html
Добрый день! Начал знакомится с либой JSONcpp. Сижу на VS2010. Прописал пути до заголовков(папка include) и до lib-файлов(папка src\lib_json): http://img820.imageshack.us/img820/5455/82385125.png включил json.h: #include "json\json.h" Но при попытке запуска вылетают ошибки: http://img854.imageshack.us/img854/9034/12251307.png
C++ Перемещение курсора Подскажите как передвинуть курсор в любую точку экрана по координатам x и y. Или каким нибуд другим способом? подробнее

Показать сообщение отдельно
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
11.08.2012, 14:55     Половина двумерного массива теряет значения
Тут код:
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
//заголовок
#ifndef MATRIX_H
#define MATRIX_H
#include <iostream>
using std::istream;
using std::ostream;
using std::cout;
using std::cerr;
using std::endl;
using std::dec;
 
class Matrix{
    friend istream &operator>>(istream &,Matrix &);
    friend ostream &operator<<(ostream &,const Matrix &);
public:
    Matrix();
 
    void setFilling(int,int,int);
 
    Matrix &operator=(const Matrix &);
    Matrix &operator+(const Matrix &);
private:
    static const int size1 = 10,size2 = 10;
    int matrix[size1][size2];
};
#endif
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
//определения
#include "Matrix.h"
 
Matrix::Matrix(){
    for (int i = 0;i < size1;i++)
        for (int y = 0;y < size2;y++)
            matrix[i][y] = 1;
}
 
istream &operator>>(istream &in,Matrix &matrix){
    int x,y,num;
 
    cout << "Enter coordinates and number ^x:>y:num :";
    in >> x;
    in.ignore();
    in >> y;
    in.ignore();
    in >> num;
 
    if (in.fail() != 0 || x < 0 || y < 0){
        cerr << "Error! Incurrect input!" << endl;
        exit(0);
    }
 
    matrix.setFilling(x-1,y-1,num);
 
    return in;
}
 
ostream &operator<<(ostream &out,const Matrix &matrix){
    for (int i = 0;i < matrix.size1;i++){
        for (int y = 0;y < matrix.size2;y++)
            out << matrix.matrix[i][y] << " ";
        
        out << endl;
    }
 
    return out;
}
 
Matrix &Matrix::operator=(const Matrix &m){
    for (int i = 0;i < size1;i++)
        for (int y = 0;y < size2;y++)
            matrix[i][y] = m.matrix[i][y];
 
    return *this;
}
 
Matrix &Matrix::operator+(const Matrix &m){
    Matrix temp;
 
    for (int i = 0;i < size1;i++)
        for (int y = 0;y < size2;y++)
            temp.matrix[i][y] = matrix[i][y] + m.matrix[i][y];
 
    return temp;
}
 
void Matrix::setFilling(int x,int y,int value){
    matrix[x][y] = value;    
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//main
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include "Matrix.h"
 
int main(){
    Matrix matrix1, matrix2,matrix3;
 
    cout << "matrix1:\n" << matrix1 << endl;
 
    cout << "matrix2:\n" << matrix2 << endl;
 
    matrix3 = matrix1 + matrix2;
 
    cout << "matrix3:\n" << matrix3 << endl;
 
    return 0;
}
Проблема в том что при передаче объекта Matrix от оператора "+" к оператору "=" половина двумерного массива matrix[size1][size2] "теряет" значение (огромные отрицательные числа).Подробнее: в операторе "+" temp.matrix[size1][size2] получает совершенно верные значения (без "потерь"), а вот в операторе "=" m.matrix[size1][size2] верен только наполовину (matrix[size1][size2] присвоено значения 1).В чем возможно проблема? Заранее спасибо за ответы...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru