Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.04.2013, 21:37. Просмотров 749. Ответов 0
Метки нет (Все метки)

Даны четыре вещественные матрицы произвольной размерности (размерности вводятся пользователем). Вычислить все возможные произведения матриц. Упорядочить по возрастанию элементы главной диагонали той из полученных матриц, след которой является наибольшим (следом матрицы называется сумма элементов главной диагонали). Если в результате вычисления произведений получена одна матрица, применить к ней указанное упорядочение.

вот, что я сделал совместными усилиями с одним знакомым, дальше мне сказал самому делать:

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 class matrix {                                                 // клас матрица
        private:                                                //писать необязательно
        float **p_m;
        int n, m;
        public:
            matrix();                                           //конструктор по умолчанию
        matrix (int count_n, int count_m);                      //конструктор инициализации
        matrix (const matrix& matr);                            //конструктор копирования
        matrix operator*(matrix& umn1);
        friend istream& operator >> (istream& is, matrix& matr);
        friend ostream& operator << (ostream& os, matrix& matr);
        ~matrix();
        };
 matrix::matrix()
 {
     m=0;
     n=0;
 }
 matrix::matrix(int count_m, int count_n)
 {
     m=count_m;
     n=count_n;
     p_m = new float *[m];
     for (int i=0; i<m; i++)
     {
         p_m[i]=new float [n];
     }
     for (int i=0; i<m; i++)
     {
         for (int j=0; j<n; j++)
             p_m[i][j]=0;
     }
 }
 
 matrix::matrix (const matrix& matr)
 {
     m=matr.m;
     n=matr.n;
     p_m = new float *[m];
     for (int i=0; i<m; i++)
     {
         p_m[i]=new float [n];
     }
     for (int i=0; i<m; i++)
     {
         for (int j=0; j<n; j++)
             p_m[i][j]=matr.p_m[i][j];
     }
 }
 
 matrix::~matrix()
 {
 }
 
 istream& operator >> (istream& is, matrix& matr)
 {
     int m, n;
     cout << "ВВедите размер матрицы через пробел: ";
     is >> m; 
     is >> n;
     matr = matrix (m, n);
     for (int i=0; i<matr.m; i++)
         for (int j=0; j<matr.n; j++)
             matr.p_m[i][j] = rand()%10/2;
     return is;
 }
 matrix matrix::operator *(matrix &umn1)
{
    float sum;
    matrix umn(this->m,umn1.n);
    if (this->n==umn1.m)
    {
        for(int i=0;i<this->m;i++)
            for(int j=0;j<umn1.n;j++)   
            {
                sum=0;
                for(int k=0;k<this->n;k++)
                    sum+=p_m[i][k]*umn1.p_m[k][j];
                umn.p_m[i][j]=sum;
            }
    }
    else
        cout<< "Error: incorrect size of the matrix";
    return umn;
}
ostream& operator << (ostream& os, matrix& matr)
{
    for (int i=0; i<matr.m; i++)
    {
        for (int j=0; j<matr.n; j++)
            os << "\t" << matr.p_m[i][j];
        cout << endl;
    }
    return os;
}
 
 void main ()
 {
     setlocale(LC_CTYPE, "rus");            //функция для включения русского языка
     matrix A;
     matrix B;
     matrix C;
     matrix D;
     cin >> A;
     cin >> B;
     cin >> C;
     cin >> D;
 
     matrix E=A*B;
     cout << E;
     system("pause");
 }
а непонятно мне, собственно, как зафигачить сюда, например, алгоритм сортировки главной диагонали:
C++
1
2
3
4
5
6
7
8
9
10
for(int i=0; i<n; i++)
        for(int j=0; j<n-i; j++)
        {
            if(A[j][j] > A[j+1][j+1])
            {
                int tmp = A[j][j];
                A[j][j] = A[j+1][j+1];
                A[j+1][j+1] = tmp;
            }
        }
и как работать с получившимися после перемножения матрицами? в исходнике я умножать пока не стал, ибо не ясно - то ли нужно умножить "тупо" в main или задать какую то функцию, которая сама перемножит их...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить все возможные произведения матриц. Упорядочить по возрастанию элементы главной диагонали... (C++):

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

все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали - на четных - C++
все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали - на четных

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

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

Вычислить сумму тех из m элементов, которые превосходят по величине все элементы, расположенные ниже главной диагонали - C++
Дана действительная квадратная матрица порядка n. Вычислить сумму тех из m элементов, расположенных по главной диагонали выше неё, которые...

Упорядочить элементы главной диагонали перестановкой столбцов - C++
Упорядочить элементы главной диагонали квадратичной матрицы(n x n) перестановкой столбцов n=5. Элементы матрицы случайные действительные...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 21:37
Привет! Вот еще темы с ответами:

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

Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали - C++
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали.

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

В прямоугольной целочисленной матрицы упорядочить элементы размещенных на главной диагонали по убыванию - C++
В прямоугольной целочисленной матрицы упорядочить элементы размещенных на главной диагонали по убыванию


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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