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

Класс матрица (не работает конструктор копирования) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компоненты текстового файла содержат целые числа. Счи-таем, что если компонента содержит два числа - это коорди-наты точки, три - координаты цент http://www.cyberforum.ru/cpp-beginners/thread413677.html
Компоненты текстового файла содержат целые числа. Счи-таем, что если компонента содержит два числа - это коорди-наты точки, три - координаты центра и радиус окружности, 4- координаты противоположных вершин прямоугольника. Вы-числить максимальную площадь фигур.
C++ 9. Создать два бинарных файла, содержащих числовую ин-формацию. В результате преобразований в первом файле должны остаться только четные, а во втором Создать два бинарных файла, содержащих числовую ин-формацию. В результате преобразований в первом файле должны остаться только четные, а во втором только нечет-ные числа. Дополнительных массивов не использовать. http://www.cyberforum.ru/cpp-beginners/thread413676.html
Разработать программный модуль, реализующий объекты в динамической области C++
Разработать программный модуль, реализующий объекты в динамической области.Объект квадрат. Заранее спасибо Здесь помогают добровольно, а вы сроки устанавливаете, нехорошо
C++ Марковский процесс (не компилируется)
Добрый вечер! Вот программа есть для марковского процесса, помогите запустить: #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <time.h> #include <math.h> #define N 10 #define M 100
C++ У прилавка выстроилась очередь из N покупателей http://www.cyberforum.ru/cpp-beginners/thread413654.html
У прилавка выстроилась очередь из N покупателей. Время обслуживания продавцом каждого покупателя в минутах занесено в вещественный массив Т. Получить массив С, содержащий время пребывания каждого покупателя в очереди. Указать номер покупателя, для обслуживания которого продавцу потребовалось самое малое время. (программа)
C++ Строки С++ Не могу понять ошибку в программе, программа должна считать сумму и разность строки чисел вбиваемых с клавиатура например: 5+6-6+3-51+5=38 или 4-40+100-50=86. Вот тело #include "stdafx.h" #include<conio.h> #include<iostream> #include<stdio.h> using namespace std; char str; подробнее

Показать сообщение отдельно
Tsyklop
3 / 3 / 2
Регистрация: 01.01.2014
Сообщений: 280
11.06.2014, 08:41     Класс матрица (не работает конструктор копирования)
Заметил ошибку.

mas[n]=new int [j]; должно быть так.

Добавлено через 1 минуту
я просто не оч могу понять что за ob и зачем он пошел таким путем.

Добавлено через 4 минуты
вот как я переделал, но у меня во время вызывания функции Rand программа крашиться. В чём баян?
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
class Matrix
{
private:
    int i, j;
    int **mas;
public:
    Matrix();
    void Init();
    void Matrix::Rand(int i, int j);
    Matrix(const Matrix&);
    ~Matrix();
    void SetSize();
    void Vivod();
};
Matrix::Matrix()
{
    mas = NULL;
    i = 0;
    j = 0;
}              
void Matrix::Init()
{
    cout << "Сработал конструктор Init\n";
    int **mas = new int *[i];
    for (int n = 0; n < i; n++)
    {
        mas[n] = new int [j];
    }
    Rand(i, j);
}
void Matrix::Rand(int i, int j)   
{
    cout << "Сработал конструктор Rand\n"; //выводиться эта строка и прога вылетает
    for (int n = 0; n < i; n++)
    {
        for (int m = 0; m < j; m++)
        {
            mas[n][m] = rand() % 100;
        }
    }
}
Matrix::~Matrix()
{
    delete[] mas;
}
//Ввод размеров матрицы 
void Matrix::SetSize()
{
    cout << "Введите i\t";
    cin >> i;
    cout << "Введите j\t";
    cin >> j;
}
//Вывод на консоль 
// Случайный ввод элементов матрицы 
void Matrix::Vvod_random()
{
    cout << "Заполнение матрицы случайным образом\n";
    for (int t = 0; t < i; t++)
    {
        for (int k = 0; k <j; k++)
        {
            mas[t][k] = rand() % 100;
        }
    }
}
// констркутор копирования
Matrix::Matrix(const Matrix& ob)
{
    int **mas = new int *[ob.i];
    for (int n = 0; n<ob.j; n++)
        mas[n] = new int [ob.j];
    for (int k = 0; k<ob.i; k++)
    {
        for (int m = 0; m<ob.j; m++)
        {
            mas[k][m] = ob.mas[k][m];
        }
    }
}
 
#include "stdfx.h"
#include "Matrix.h"
#include <time.h>
void main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    Matrix A;
    A.SetSize();
    A.Init();
    A.Vivod();
}
Добавлено через 12 минут
решил проблему. при выделении памяти нужно писать вот так: mas = new int *[i];
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru