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

Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков - C++

Восстановить пароль Регистрация
 
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
06.04.2014, 16:19     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков #1
Написать набор функций (create,access,destroy), обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков порядка 20. Порядок таких матриц определяется во время выполнения программы.
Только недавно начал изучать указатели, и испытываю дикие трудности с заданиями. Буду рад любой помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2014, 16:19     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков
Посмотрите здесь:

C++ Перестановка блоков матрицы
C++ Приведение матрицы к блочно-диагональному виду
C++ перестановка блоков матрицы
C++ Диагональные элементы матрицы заменить на 1
C++ Заменить диагональные элементы матрицы
C++ Задача с использованием функций (блоков)
Как мне сделать задачу с использованием функций (блоков)? C++
Определить минимальный элемент квадратной матрицы, расположенный в левой части, ограничен диагоналями, включая диагональные элементы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 164
07.04.2014, 13:39     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков #2
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
#include "stdafx.h"
#include <iostream>
typedef int MatrixType;
class TriangularMatrix
{
private:
    size_t size;
    MatrixType** body;
public:
    TriangularMatrix(size_t s)
    {
        size=s;
        body = new MatrixType*[size];
        for(int i=1;i<=size;i++)
        {
            body[i-1] = new MatrixType[i];
        }
    }
    ~TriangularMatrix()
    {
        for(int i=0;i<size;i++)
        {
            delete[] body[i];
        }
        delete[] body;
    }
    MatrixType& GetCell (int row,int column)
    {
        if (row<0||row>size||column<0||column>row) return body[0][0];
        else return body[row][column];
    }
        void SetCell (int row,int column, MatrixType value)
    {
        if(row<0||row>size||column<0||column>row) return;
        else body[row][column]=value;
    }
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    TriangularMatrix Tr = TriangularMatrix(2);
    Tr.SetCell(0,0,1);
    Tr.SetCell(1,0,2);
    Tr.SetCell(1,1,3);
    std::cout<<Tr.GetCell(0,0)<<"\t"<<Tr.GetCell(1,0)<<"\t"<<Tr.GetCell(1,1);
    Tr.SetCell(0,1,4);
    std::cout<<"\n"<<Tr.GetCell(0,1);
    return 0;
}
Добавлено через 17 часов 59 минут
Это еще не все TriangularMatrix Tr2=Tr; такая инструкция обрушит программу, двойным delete.

Добавлено через 1 час 55 минут
Вторая часть класса
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
void SetCell (int row,int column, MatrixType* value)
    {
        if(row<0||row>size||column<0||column>row) return;
        else body[row][column]=*value;
    }
TriangularMatrix(TriangularMatrix& b)
    {
        size=b.size;
        body = new MatrixType*[size];
        for(int i=0;i<size;i++)
        {
            body[i] = new MatrixType[i+1];
            for(int j=0;j<i+1;j++) body[i][j] = b.body[i][j];
        }
    }
TriangularMatrix& operator=(TriangularMatrix& arg2)
    {
        if(this!=&arg2)
        {
            size=arg2.size;
            for(int i=0;i<size;i++)
            {
                delete[] body[i];
            }
            delete[] body;
            body = new MatrixType*[size];
            for(int i=0;i<size;i++)
            {
            body[i] = new MatrixType[i+1];
            for(int j=0;j<i+1;j++) body[i][j] = arg2.body[i][j];
            }
        }
        return *this;
    }
Чтобы понимать, что тут происходит смотри на YouTube Основы C++, лекция 6 от Laur B.
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
07.04.2014, 16:06  [ТС]     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков #3
Archi0, спасибо
Yandex
Объявления
07.04.2014, 16:06     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков
Ответ Создать тему
Опции темы

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