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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
#1

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

04.10.2013, 11:13. Просмотров 957. Ответов 8
Метки нет (Все метки)

Вопщем так. мне завтра нужно сдать эту лабу. помогите пожалуйста доделать. ниже прикрепляю тект задания и часть программы, что уже сделала.
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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 11:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужна подмога по классам (Создать класс матрица) (C++):

Нужна подмога - C++
нужно составить программу Дан массив а(50), заполненный значениями в диапазоне от 160 до 310. Создать программу (функцию), определяющую...

Создать класс матрица - C++
Создать класс матрица Данный класс содержит указатель на long, размер строков и столбцов и состаяние ошибки. Определить конструктор без...

Создать класс матрица - C++
разработать класс матрица, реализовать его элементы, ребята помогите пожалуйста не шарю вобще( в С++ с пояснением

Создать класс «вещественная матрица» - C++
1. Создать класс «вещественная матрица». Реализовать методы: заполнение матрицы случайными числами от 0 до 1, вычисление транспонированной...

Задача создать класс матрица - C++
Мальчики пожалуйста помогите... Создать класс матрица Данный класс содержит указатель на int, размер строк и столбцов и состояние ошибки....

Создать класс Матрица и производный от него - C++
Здравствуйте, у меня возникла проблема в написании производного класса, на основе базового класса Матрица. Задание звучит так: Организовать...

8
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.10.2013, 12:40 #2
copy constructor получает всегда единственный аргумент: ссылку на объект его класса.
остальное не смотрел. что еще в глаза запало - имя класса желательно с апперкэйса начинать, и memver variables - c m_. жаргона лучше придерживаться, читабельнее для коллег. ну и на форуме лучше теги для кода использовать

Не по теме:

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

0
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);
0
Croessmah
Эксперт CЭксперт С++
13510 / 7668 / 866
Регистрация: 27.09.2012
Сообщений: 18,866
Записей в блоге: 3
Завершенные тесты: 1
04.10.2013, 13:02 #4
Цитата Сообщение от razor_ua Посмотреть сообщение
В деструкторе проверяй валидный ли указатель, иначе получишь ошибку
каким образом его проверять?

Добавлено через 1 минуту
Цитата Сообщение от razor_ua Посмотреть сообщение
C++
1
construct(int a = 0, int b , int c = 0)
компилируется?
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
04.10.2013, 13:03 #5
Цитата Сообщение от novi4ok Посмотреть сообщение
copy constructor получает всегда единственный аргумент: ссылку на объект его класса.
вот и ограничивай себя после этого, а я возьму и задам еще параметр для гибкости
Цитата Сообщение от razor_ua Посмотреть сообщение
p = new float(0);
лишнее приведение типов
p = new float(0.0f);
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 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 минут
Почему у вас конструктор копирования ничего не возвращает?
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
04.10.2013, 13:45 #7
Цитата Сообщение от Ilot Посмотреть сообщение
Почему у вас конструктор копирования ничего не возвращает?
эм, что?
1
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
04.10.2013, 13:52 #8
Цитата Сообщение от Кудаив Посмотреть сообщение
эм, что?
Стыдно
0
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
04.10.2013, 17:35  [ТС] #9
вы о чем вообще? что стыдно и т.д. я первую неделю С++ изучаю. учусь в техникуме. мне такие премудрости пока что не к чему. ожидала помощи реальной как в прошлый раз.а оказалось.. вопщем ппц. мне конец.
0
04.10.2013, 17:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 17:35
Привет! Вот еще темы с ответами:

Создать динамический класс Матрица и найти А+В, А-В, А*В - C++
Всем добрый день! Мне нужно создать динамический класс Матрица и найти А+В, А-В, А*В. У меня возникла проблема: пишет Build Error. НЕ могу...

Не понятное условие задания (Создать класс матрица) - C++
Добрый день! Помогите, пожалуйста, разобраться с условием задания. Вот само задание: Создать класс матрица, который содержит указатель...

Создать класс матрица, умножить матрицу на число - C++
Добрый день,не получается создать метод умножения матрицы на число Вот обычное решение задания #include &lt;iostream&gt; using namespace...

Как создать класс матрица с атрибутами private! - C++
Описать класс матрица в которой содержатся следующие атрибуты: private-3 матрицы одинаковой размерности три на три и методы класса...


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

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

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