Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
1

Запрограммировать класс матрица, и расписать методы работы с ним

17.10.2013, 20:58. Показов 1173. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
class Matrix
{
  public:
    Matrix(int n, int m);
    ~Matrix();
    double &get(int i, int j);
    void transp(); // транспонировать
    void add(double x); // прибавить ко всем элементам матрицы x
    void multiply(double x); // умножить все на x
    void print();  // распечатать состояние объекта
};
cпасайтееееее надо написать в кодблокс или с++. я совершенный ноль в этом, помогитеееее
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2013, 20:58
Ответы с готовыми решениями:

Разработать класс прямоугольник и методы работы с ним
Прямоугольник с полями длина и высота прямоугольника и методами ввода,вывода полей,вычисления...

Разработать класс «Циклический список» и методы работы с ним
нужно срочно написать такую штуку, брат сидит на зачете и скинул задание. Помогите...

Создать базовый класс Матрица и производные - методы работы с ней
Создать иерархию классов представляющих простое наследование. Базовый класс – квадратная матрица...

Создать массив, заполненный случайными числами. Разработать методы для работы с ним
Создать массив из 15 элементов, заполненный случайными числами в диапазоне от -100 до 100. ...

18
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:01 2
Виктория1234, так вы же в с++ написали,и ошибок я не вижу
или вам нужно сами функции расписать?
1
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:04  [ТС] 3
это-то я написала, а дальше-то что?! знаю, смешно звучит, но я не знаю как писать дальше... верней я как бы написала, но ошибок столько выдала что я в отчаянии все удалила.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28045 / 15778 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
17.10.2013, 21:07 4
Цитата Сообщение от Виктория1234 Посмотреть сообщение
а дальше-то что?!
а бог вас знает что дальше...
условия то задачи нет...
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:07  [ТС] 5
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, так вы же в с++ написали,и ошибок я не вижу
или вам нужно сами функции расписать?
да, нужно их расписать, а как я не знаю(
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:09 6
Виктория1234, давайте наработки. Начнем с конструктора и создания массива, то есть матрицы
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:10  [ТС] 7
Цитата Сообщение от magirus Посмотреть сообщение
а бог вас знает что дальше...
условия то задачи нет...
нужно запрограммировать класс матрица, и расписать транспонирование, прибавление ко всем элементам матрицы х, умножение все на х и распечатать состояние объекта
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:47 8
Виктория1234, наработки то выложите) посмотрим, поможем исправить
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 22:36  [ТС] 9
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, наработки то выложите) посмотрим, поможем исправить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class CMatrixStr
{
private:
    int Rows;
    int Cols;
    float ** FloatData;
    float * DataMin;
    float * DataMax;
        
public:
    CMatrixStr(int Row=1,int Col=1);
    ~CMatrixStr(void);
    float GetAt(int Row,int Col);
    void SetAt(int Row,int Col,float Data);
    void Display();
    void MinMax(int Row);
    void Fill();
};
мож так
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 22:37 10
Виктория1234, а сами функции делали? Если да, тоже выложите)
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 22:46  [ТС] 11
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, наработки то выложите) посмотрим, поможем исправить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "iostream.h"
#include "matrix.h"
 
void main()
{
    // спросим сколько колонок и строк
    int Row,Col;
    cout << "\nRow ?:" ;
    cin >> Row ;
    cout << "\nCol ?:" ;
    cin >> Col ;
 
 
    CMatrixStr Matrix(Row,Col);    
    Matrix.Fill();                               
    Matrix.Display();                        
}
Добавлено через 7 минут
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, а сами функции делали? Если да, тоже выложите)
неа, ничего не делала больше... я походу единственный человек который реально нифига не понимает в программировании
это печально...
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:06 12
Виктория1234, ну раз признались, то давайте начинать понимать) начинаем делать с конструктора, куда передаются размеры матрицы. В конструкторе нужно объявить динамическую матрицу nxm.
В деструкторе напротив, удалить эту матрицу, что бы освободить память.
Объявлять матрицу примерно так...

C++
1
2
3
floatData = new double*[n];
for (int i=0;i<n;i++)
floatData[i]=new double[m];
Добавлено через 8 минут
Виктория1234, идеи по поводу деструктора есть?
1
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 23:11  [ТС] 13
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, ну раз признались, то давайте начинать понимать) начинаем делать с конструктора, куда передаются размеры матрицы. В конструкторе нужно объявить динамическую матрицу nxm.
В деструкторе напротив, удалить эту матрицу, что бы освободить память.
Объявлять матрицу примерно так...

C++
1
2
3
floatData = new double*[n];
for (int i=0;i<n;i++)
floatData[i]=new double[m];
Добавлено через 8 минут
Виктория1234, идеи по поводу деструктора есть?
я если честно не понимаю почему мы даже так объявили матрицу, а как я скинула нельзя делать?
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:14 14
Виктория1234, а вы скидывали код, где создавалась матрица? Где?
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 23:22  [ТС] 15
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, а вы скидывали код, где создавалась матрица? Где?
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
#include "iostream.h"      
#include "stdlib.h"             
#include "stdio.h"
#include "matrix.h"            
 
CMatrixStr::CMatrixStr(int Row,int Col)
{
    Rows = Row;        
    Cols = Col;
    FloatData= new float * [Rows];
 
    for (int j=0;j<Rows;j++){
        FloatData[j] = new float[Cols];
        for (int i=0;i<Cols;i++){
            FloatData[j][i]=0.0;
        }
    }
    return;
};
CMatrixStr::~CMatrixStr()
{
 
       for (int j=0;j<Rows;j++)
{
        delete FloatData[j];
    }
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:25 16
Виктория1234, почти правильно. Только вот в конструкторе return не нужен.
И массивы удаляются таким образом delete []FloatData[j]; А после цикла еще и delete []FloatData.

Теперь каковы идеи по поводу функции add(double x); ?
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 23:43 17
А еще неплохо бы использовать список инициализации в конструкторе и заголовочные файлы, если не пользовательские, то писать в угловых скобках.
Покажите ваш класс, я помогу написать этот САБЖ.

Также надо помнить про то, что если в классе идет работа с динамической памятью, то надо написать самим конструктор копий, деструктор и оператор присваиваний.
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.10.2013, 00:11 18
MrGluck, можно подробнее про список инициализации и конструктор копий?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.10.2013, 01:17 19
Folko, список инициализации конструктора нужно писать лишь зная прототип класса т.к. нельзя нарушать порядок объявления переменных.
Вот пример:
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
#include <iostream>
 
class A
{
  public:
    A() : arr_(NULL), sz_(0) {}
    A(const int *arr, const int sz) : arr_(new int[sz]), sz_(sz)
    {
        for (int i=0; i < sz; i++)
            arr_[i] = arr[i];
    }
    A(const A &a) : arr_(new int[a.sz_]), sz_(a.sz_)
    {
        for (int i=0; i < sz_; i++)
            arr_[i] = a.arr_[i];
    }
    A& operator= (const A &a)
    {
        // исключаем работу при присваивании самому себе
        if (this != &a)
        {
            delete[] arr_;
            arr_ = new int[a.sz_];
            sz_ = a.sz_;
            for (int i=0; i < sz_; i++)
                arr_[i] = a.arr_[i];
        }
        return *this;
    }
    ~A()
    {
        if (arr_) delete[] arr_;
    }
    void print() const
    {
        for (int i=0; i < sz_; i++)
            std::cout << arr_[i] << " ";
        std::cout << std::endl;
    }
 
  private:
    int *arr_;
    int sz_;
};
 
int main()
{
    A a;
    int arr[4] = {1, 2, 3, 4};
    A b(arr, 4);
    A c(b);
    A d = c;
    a.print();
    b.print();
    c.print();
    d.print();
}
1
18.10.2013, 01:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 01:17
Помогаю со студенческими работами здесь

Создать класс для описания объекта и работы с ним
В методах предусмотреть запись, чтение, изменение свойств объекта. Объект - матрица целых чисел....

Организовать класс квадратная матрица размерности 3 на 3, содержащий методы
Организовать класс квадратная матрица размерности 3 на 3, содержащий методы: вывода матрицы в...

Организовать класс квадратная матрица размерности 2 на 2, содержащий методы
1) Составить описание класса. 2) В классе предусмотреть не менее трех конструкторов различных...

Как в Oracle 8.1.7 создать поле типа "счётчик" и методы работы с ним?
Сабж собственно. И подскажите плиз примеры работы с таким полем.. А именно мне не понятен момент...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru