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

Нужна подмога по классам (Создать класс матрица) - C++

Восстановить пароль Регистрация
 
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
04.10.2013, 11:13     Нужна подмога по классам (Создать класс матрица) #1
Вопщем так. мне завтра нужно сдать эту лабу. помогите пожалуйста доделать. ниже прикрепляю тект задания и часть программы, что уже сделала.
P.S. просьба,писать в том же стиле чтоли,как я) чтобы мне понятно было

Задание
Создать класс матрица. Данный класс содержит указатель на float, количество строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с двумя параметрами и конструктор с тремя параметрами, конструктор копирования, деструктор. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с двумя параметрами, - размерами матрицы, - выделяет место и инициализирует элементы матрицы суммой их индексов, конструктор с тремя параметрами выделяет место (первые два аргумента) и инициализирует третьим аргументом. Деструктор освобождает память. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию печати. Определить функции, транспонирующую матрицу. Проверить работу этого класса. Предусмотреть возможность подсчета числа объектов данного типа. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.


И вот код.
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
#include <iostream>
using namespace std;
/***********************/
/*   Создание класса mat   */
/***********************/
class mat 
{
    float *p;
    int n;
    int m;
    public:
/****************************/
/* Конструктор без параметров */
/****************************/
mat()
    {
        n=1;m=1;
        p=new float[0*0];
        *p=0;
    }
/*******************************/
/* Конструктор с 2мя параметрами */
/*******************************/
 
mat(int n1,int m1)
    {
    n=n1; m=m1;
    int i,j;
    p=new float[n*m];
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    *(p+i*m+j)=j+i;
    }
/*******************************/
/* Конструктор с 3мя параметрами */
/*******************************/
 
mat(int n1,int m1,int x1)
    {
    n=n1; m=m1; 
    int i,j;
    //int x1;
    p=new float[n*m];
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    *(p+i*m+j)=x1;
    }
/***************************/
/* Конструктор копирования  */
/***************************/
 
mat (mat &m1,int n,int m,mat &m2)
{
    int i,j;
    n= m1.n;m=m1.m;
    p = new float[n*m];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            *(m1.p+i*m+j) = *(m2.p+i*m+j);
        
}
 
 
 
 
 
 
/**************/
/* Деструктор */
/*************/
 
~mat()
{
    delete[] p;
}
/******************/
/* Функция вывода */
/******************/
 
    void vivod()
    {
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            cout<<*(p+i*m+j)<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    }
 
};
/*******************/
/* Главная функция */
/******************/
int main() 
{
    mat m1(3,3);
    m1.vivod();
    mat m2(3,3,6);
    m2.vivod();
    mat m3(m1,3,3,m2);
    m1.vivod();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 11:13     Нужна подмога по классам (Создать класс матрица)
Посмотрите здесь:

Создать класс матрица C++
C++ Цикличный процесс НУЖНА ВАША ПОДМОГА!!!
Создать класс матрица C++
Создать класс Матрица и производный от него C++
C++ Задача создать класс матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.10.2013, 12:40     Нужна подмога по классам (Создать класс матрица) #2
copy constructor получает всегда единственный аргумент: ссылку на объект его класса.
остальное не смотрел. что еще в глаза запало - имя класса желательно с апперкэйса начинать, и memver variables - c m_. жаргона лучше придерживаться, читабельнее для коллег. ну и на форуме лучше теги для кода использовать

Не по теме:

без мата нельзя было обойтись?

razor_ua
10 / 10 / 0
Регистрация: 20.05.2011
Сообщений: 71
04.10.2013, 12:55     Нужна подмога по классам (Создать класс матрица) #3
Почитай про конструкторы, да повнимательнее.
Вместо кучи конструкторов с разными параметрами, можно использовать значения по умолчанию
C++
1
construct(int a = 0, int b , int c = 0)
и инициализировать через :
C++
1
constr(int _a,int _b = 0) : a(_a), b(_b)
)
В деструкторе проверяй валидный ли указатель, иначе получишь ошибку

+ по тексту :
C++
1
2
p=new float[0*0];
*p=0;
- страшные дела творятся....

можно так p = new float(0);
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.10.2013, 13:02     Нужна подмога по классам (Создать класс матрица) #4
Цитата Сообщение от razor_ua Посмотреть сообщение
В деструкторе проверяй валидный ли указатель, иначе получишь ошибку
каким образом его проверять?

Добавлено через 1 минуту
Цитата Сообщение от razor_ua Посмотреть сообщение
C++
1
construct(int a = 0, int b , int c = 0)
компилируется?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
04.10.2013, 13:03     Нужна подмога по классам (Создать класс матрица) #5
Цитата Сообщение от novi4ok Посмотреть сообщение
copy constructor получает всегда единственный аргумент: ссылку на объект его класса.
вот и ограничивай себя после этого, а я возьму и задам еще параметр для гибкости
Цитата Сообщение от razor_ua Посмотреть сообщение
p = new float(0);
лишнее приведение типов
p = new float(0.0f);
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
04.10.2013, 13:39     Нужна подмога по классам (Создать класс матрица) #6
Цитата Сообщение от razor_ua Посмотреть сообщение
Вместо кучи конструкторов с разными параметрами, можно использовать значения по умолчанию
По умолчанию могут быть только крайние правые.

Добавлено через 1 минуту
C++
1
mat(int n1,int m1,int x1)
Третий элемент должен быть указатель на матрицу m на n.

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
/****************************/
 /* Конструктор без параметров */
 /****************************/
 mat()
 {
 n=1;m=1;
 p=new float[1];
 *p=0;
 }
Предусмотреть возможность подсчета числа объектов данного типа.
Создать статическую переменную. Впихнуть ее в конструктор и деструктор.

Добавлено через 10 минут
Почему у вас конструктор копирования ничего не возвращает?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
04.10.2013, 13:45     Нужна подмога по классам (Создать класс матрица) #7
Цитата Сообщение от Ilot Посмотреть сообщение
Почему у вас конструктор копирования ничего не возвращает?
эм, что?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
04.10.2013, 13:52     Нужна подмога по классам (Создать класс матрица) #8
Цитата Сообщение от Кудаив Посмотреть сообщение
эм, что?
Стыдно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 17:35     Нужна подмога по классам (Создать класс матрица)
Еще ссылки по теме:

Создать класс «вещественная матрица» C++
Создать динамический класс Матрица и найти А+В, А-В, А*В C++
Шифрование текста. нужна подмога в дешифровке C++

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

Или воспользуйтесь поиском по форуму:
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
04.10.2013, 17:35  [ТС]     Нужна подмога по классам (Создать класс матрица) #9
вы о чем вообще? что стыдно и т.д. я первую неделю С++ изучаю. учусь в техникуме. мне такие премудрости пока что не к чему. ожидала помощи реальной как в прошлый раз.а оказалось.. вопщем ппц. мне конец.
Yandex
Объявления
04.10.2013, 17:35     Нужна подмога по классам (Создать класс матрица)
Ответ Создать тему
Опции темы

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