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

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

Войти
Регистрация
Восстановить пароль
 
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
#1

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

06.04.2014, 16:19. Просмотров 316. Ответов 2
Метки нет (Все метки)

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

Приведение матрицы к блочно-диагональному виду - C++
Помогите, пожалуйста! Так то надо написать программу на си++ "Приведение матрицы к блочно-диагональному виду" то есть когда все элементы...

Найти сумму всех элементов матрицы и заменить ею все диагональные элементы этой матрицы - C++
Найти сумму всех ее элементов и заменить ею все диагональные элементы этой матрицы.

Заменить диагональные элементы матрицы - C++
В результате вычислений получена квадратная матрица n*n(3*3). Нужно заменить положительные диагональные элементы числом -5. Подскажите...

Диагональные элементы матрицы заменить на 1 - C++
дан двумерный массив. диагональные элементы массива заменить на 1. проблема с заменой. в полученном массиве все элементы совпадают только...

Заменить диагональные элементы матрицы минимальными элементами соответствующих столбцов - C++
Заданная матрица. Заменить диагональные элементы матрицы минимальными элементами соответствующих столбцов.

Найти сумму всех элементов матрицы и заменить ею все диагональные элементы - C++
Найти сумму всех ее элементов и заменить ею все диагональные элементы этой матрицы.

Определить минимальный элемент квадратной матрицы, расположенный в левой части, ограничен диагоналями, включая диагональные элементы - C++
Определить минимальный элемент квадратной матрицы, расположенный в левой части, ограничен диагоналями, включая диагональные элементы.

Транслирование строки формулы в набор функций - C++
Заголовок темы не совсем верно раскрывает суть вопроса. Задача: вводим строку форумы (пример y=sin(x)+5;). Левый коэф всегда y, т.е. мы...

Описать структуру Account, а также набор функций для работы с ней - C++
Реализовать в struct счет (Account), а так же набор функций для работы с ним (пополнение, просмотр, списание,первод на другой счет,...

Определить структурированный тип, набор функций (в виде меню) для работы с массивом структур - C++
Здравствуйте. Помогите пожалуйста решить задачу по структурам. на С++. Вот текст задачи: Определить структурированный тип, набор...

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

Перестановка блоков матрицы - C++
1)Дано действительную квадратную матрицу порядка 2n. Получить новую матрицу, переставляя ее блоки розмером nxn рисунок и второе задание...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 167
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, спасибо
Ответ Создать тему
Опции темы

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