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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Поменять местами два массива http://www.cyberforum.ru/cpp-beginners/thread1140429.html
#include <stdio.h> #include <conio.h> #include <windows.h> const int n=9; int a, b; inline int pr(void) { printf("a: "); for(int i=0; i<n; i++) {
C++ Линейный список прямого доступа в связанной памяти Здравствуйте!Помогите пожалуйста. Не могу понять как сделать чтобы все заданные элементы не удалялись. Задание: Удалить последний по порядку элемент с заданным значением. http://www.cyberforum.ru/cpp-beginners/thread1140428.html
C++ Подсчитать количество отрицательных и сумму положительных чисел
написать программу на тему "основные операторы языка Си" В последовательности чисел вводимой с клавиатуры, подсчитать количество отрицательных и сумму положительных чисел. Хранить элементы последовательности в памяти нет необходимости:)
C++ Даны четыре разных числа. Найти среди них два наибольших
Даны четыре разных числа. Найти среди них два наибольших. Чет я не понимаю как это все написать через if кто может написать ? как вывести 2 наибольших
C++ Char, TCHAR, wchar_t http://www.cyberforum.ru/cpp-beginners/thread1140401.html
Как правильно записать эти 2 участка кода . Ошибки - 1>d:\c++\lab1\lab1\main.cpp(54): error C2664: strcpy: невозможно преобразовать параметр 2 из "TCHAR *" в "const char *" 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1>d:\c++\lab1\lab1\main.cpp(56): error C2664: strcat:...
C++ База данных студентов (массивы) Прошу помощи с заданием. 1) Сделать при помощи динамического массива базу данных студентов (имя и фамилия) до 70 человек. Чтобы была возможность просмотра списка студентов, возможность добавления, удаления и прибавления студентов (по средству cin) и был простой, понятный интерфейс программы. подробнее

Показать сообщение отдельно
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 164
07.04.2014, 13:39     Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков
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.
 
Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru