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

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

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

Студворк — интернет-сервис помощи студентам
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2013, 20:58
Ответы с готовыми решениями:

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

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

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

18
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:01
Виктория1234, так вы же в с++ написали,и ошибок я не вижу
или вам нужно сами функции расписать?
1
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:04  [ТС]
это-то я написала, а дальше-то что?! знаю, смешно звучит, но я не знаю как писать дальше... верней я как бы написала, но ошибок столько выдала что я в отчаянии все удалила.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
17.10.2013, 21:07
Цитата Сообщение от Виктория1234 Посмотреть сообщение
а дальше-то что?!
а бог вас знает что дальше...
условия то задачи нет...
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:07  [ТС]
Цитата Сообщение от Folko Посмотреть сообщение
Виктория1234, так вы же в с++ написали,и ошибок я не вижу
или вам нужно сами функции расписать?
да, нужно их расписать, а как я не знаю(
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:09
Виктория1234, давайте наработки. Начнем с конструктора и создания массива, то есть матрицы
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 21:10  [ТС]
Цитата Сообщение от magirus Посмотреть сообщение
а бог вас знает что дальше...
условия то задачи нет...
нужно запрограммировать класс матрица, и расписать транспонирование, прибавление ко всем элементам матрицы х, умножение все на х и распечатать состояние объекта
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 21:47
Виктория1234, наработки то выложите) посмотрим, поможем исправить
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 22:36  [ТС]
Цитата Сообщение от 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
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 22:37
Виктория1234, а сами функции делали? Если да, тоже выложите)
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 22:46  [ТС]
Цитата Сообщение от 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
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:06
Виктория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  [ТС]
Цитата Сообщение от 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
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:14
Виктория1234, а вы скидывали код, где создавалась матрица? Где?
0
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 9
17.10.2013, 23:22  [ТС]
Цитата Сообщение от 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
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
17.10.2013, 23:25
Виктория1234, почти правильно. Только вот в конструкторе return не нужен.
И массивы удаляются таким образом delete []FloatData[j]; А после цикла еще и delete []FloatData.

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

Также надо помнить про то, что если в классе идет работа с динамической памятью, то надо написать самим конструктор копий, деструктор и оператор присваиваний.
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.10.2013, 00:11
MrGluck, можно подробнее про список инициализации и конструктор копий?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.10.2013, 01:17
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2013, 01:17
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru