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

Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы - C++

Восстановить пароль Регистрация
 
Vladuslav_11
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
26.01.2014, 19:52     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы #1
Так сложилось что в понедельник нужно сдать эту лабораторную работу иначе меня исключат из университета, а так как я не очень разбираюсь с массивами то у меня большая проблема.
Пожалуйста помогите неопытному студенту решить эту задачу.
p.s.\если не сложно то напишите комментарии к программе. Спасибо к отозвавшимся.
C++
С клавиатуры задаются две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы этих матриц. Из найденных значений сформировать множество В.

с ув. студент Владислав

Добавлено через 9 часов 59 минут
Пожалуйста!

Добавлено через 24 минуты
Я так понял никто даже понятия не имеет как это делать!,, да?!,..

Добавлено через 3 часа 7 минут
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
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
double determ(int C[5][5], int size)
 
int main()
{ int size=5;
        cout<<"Enter matr A: ";
        int Arr[5][5];
        for(int i=0;i<size;i++)
                for(int j=0;j<size;j++)
                        cin>>Arr[i][j];
        for(int i=0;i<size;i++)
        {
                for(int j=0;j<size;j++)
                        cout<<Arr[i][j]<<' ';
                cout<<endl;
        }
       
        
 
        int Art[5][5];
        cout<<"Enter matr B: ";
        
        for(int i=0;i<size;i++)
                for(int j=0;j<size;j++)
                        cin>>Art[i][j];
        for(int i=0;i<size;i++)
        {
                for(int j=0;j<size;j++)
                        cout<<Art[i][j]<<' ';
                cout<<endl;
        }
 
int C[5][5];
for (int i=0; i<5; i++) {
    for(int j=0; j<5; j++)
        C[i][j]=Art[i][j]+Arr[i][j]; }
 
cout<< determ(C[5][5], size) <<'\n';
 
 
_getch();
return 0;
}
 
double determ(int C[5][5], int size)
{
        int i,j;
        double det=0;
        int** matr;
        if(size==1)
        {
                det=C[0][0];
        }
        else if(size==2)
        {
                det=C[0][0]*C[1][1]-C[0][1]*C[1][0];
        }
        else
        {
                matr=new int*[size-1];
                for(i=0;i<size;++i)
                {
                        for(j=0;j<size-1;++j)
                        {
                                if(j<i) 
                                        matr[j]=C[j];
                                else
                                        matr[j]=C[j+1];
                        }
                        det+=pow((double)-1, (i+j))*determ(matr, size-1)*C[i][size-1];
                }
                delete[] matr;
        }
        return det;
}
Должна находить детерминант сумы, но что-то не работает. Подскажите что не так.
Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 19:52     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
Посмотрите здесь:

C++ Найти наибольшие элементы каждого из столбцов матрицы и их индексы
C++ Найти наименьшие элементы матрицы
C++ Динамические массивы. Найти наибольшие элементы каждой строки матрицы Х и записать их в массив Y
Найти наибольшие элементы каждой строки матрицы C++
C++ Вычислить детерминант матрицы размером 5x5, взятой из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,060
Завершенные тесты: 1
26.01.2014, 19:53     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы #2
Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
Найти детерминант их суммы
Детерменант? это в смысле определитель?
А что за множество B ?
Vladuslav_11
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
26.01.2014, 20:20  [ТС]     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы #3
Цитата Сообщение от Kill100 Посмотреть сообщение
Детерменант? это в смысле определитель?
А что за множество B ?
Да определитель,
Множество А + множество B = множество С, с которого нужно найти определитель.
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,060
Завершенные тесты: 1
26.01.2014, 20:48     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vladuslav_11, вот навоял минут за 30

Не по теме:

С тебя печенька


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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
/// Производит чтение массива размером n*m с консоли
double** enterArray(int n, int m)
{
    double** outPut = new double*[n];
    for (int i = 0; i < n; i++)
        outPut[i] = new double[m];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf_s("%lf", &outPut[i][j]);//cin>>outPut[i][j] //если будет ошибка
        }
    }
    return outPut;
}
/// Производит вывод массива на консоль
void printArray(double** inputArray, int n, int m)
{
    for (int i = 0; i < n; i++, printf("\r\n"))
    {
        for (int j = 0; j < m; j++)
        {
            printf("%lf ", inputArray[i][j]);
        }
    }
}
 
///Получаем сумму двух матриц
/// matrA - матрица A, matrB - матрица B, так как суммировать можно 
/// только матрицы одинаковых размерностей то nA = nB, mA=mB по этому сократим до m и n
double** getSumm(double** matrA, double** matrB, int n, int m){
    double** outPut = new double*[n];
    for (int i = 0; i < n; i++)
        outPut[i] = new double[m];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            outPut[i][j] = matrA[i][j] + matrB[i][j];
        }
    }
    return outPut;
}
 
///Возвращает максимальное число в массиве
///inputArray - массив для поиска максимума, n,m его размеры 
double getMax(double** inputArray, int n, int m)
{
    double Max = inputArray[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (Max < inputArray[i][j]) Max = inputArray[i][j];
        }
    }
    return Max;
}
///Возвращает минимальное число в массиве
///inputArray - массив для поиска минимума, n,m его размеры 
double getMin(double** inputArray, int n, int m)
{
    double Min = inputArray[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (Min > inputArray[i][j]) Min = inputArray[i][j];
        }
    }
    return Min;
}
 
/// Метод получающий определитель матрицы. Рекурсивно
/// "Matrix" Сама матрица у которой считаем определитель
/// "n" Размер матрицы
/// "m" Размер матрицы
/// returns - Определитель матрицы
double Determinant(double** Matrix, int n, int m)
{
    double d = 0;
    double** b = new double*[n];
    for (int i = 0; i < n; i++)
        b[i] = new double[m];
    if (n == 2)
    {
        return (Matrix[0][0] * Matrix[1][1] - Matrix[0][1] * Matrix[1][0]);
    }
    for (int i = 0; i < n; i++)
    {
        for (int y = 1; y < m; y++)
        for (int x = 0; x < n; x++)
        {
            if (x == i) continue;
            if (x < i)
                b[y - 1][x] = Matrix[y][x];
            else
                b[y - 1][x - 1] = Matrix[y][x];
        }
        d += pow(-1, (double)(2 + i)) * Matrix[0][i] * Determinant(b, n - 1, m - 1);
    }
    return d;
}
 
int main()
{
    int n, m;
    printf("Input n\r\n");
    scanf_s("%i", &n);//cin>>n //если будет ошибка
    scanf_s("%i", &m);//cin>>n //если будет ошибка
    printf("Input array A \r\n");
    double** aArray = enterArray(n, m);
    printf("Input array B \r\n");
    double** bArray = enterArray(n, m);
    printf("Array A = \r\n");
    printArray(aArray, n, m);
    printf("Array B = \r\n");
    printArray(bArray, n, m);
    printf("Array A + B = \r\n");
    double** summAB = getSumm(aArray, bArray, n, m);
    printArray(summAB, n, m);
    printf("max(A) = %lf, min(A) = %lf\r\n", getMax(aArray, n, m), getMin(aArray, n, m));
    printf("max(B) = %lf, min(B) = %lf\r\n", getMax(bArray, n, m), getMin(bArray, n, m));
    printf("max(A+B) = %lf, min(A+B) = %lf\r\n", getMax(summAB, n, m), getMin(summAB, n, m));
    printf("Determinant A + B = %lf\r\n", Determinant(summAB, n, m));
    system("Pause");
    for (int i = 0; i < n; i++)
    {
        delete[] aArray[i];
        delete[] bArray[i];
        delete[]summAB[i];
    }
    delete[] aArray;
    delete[] bArray;
    delete[]summAB;
    return 0;
}
Добавлено через 15 минут
Если нужно заполнять случайными значениями
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
#include <stdlib.h>
#include <time.h>
#include <iostream>
 
double random(double min, double max)
{
    return (double)rand() / RAND_MAX*(max - min) + min;
}
 
///Получает случайно сгенерированный массив
double** getRandomArray(int n, int m)
{
    double** outPut = new double*[n];
    for (int i = 0; i < n; i++)
        outPut[i] = new double[m];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            outPut[i][j] = random(-25, 25);
        }
    }
    return outPut;
}
...
...
...
...
int main()
{
    srand(time(NULL));
    int n, m;
    printf("Input n\r\n");
    scanf_s("%i", &n);//cin>>n //если будет ошибка
    scanf_s("%i", &m);//cin>>n //если будет ошибка
    printf("Input array A \r\n");
    double** aArray = getRandomArray(n, m); //enterArray(n, m);
    printf("Input array B \r\n");
    double** bArray = getRandomArray(n, m); //enterArray(n, m);
    printf("Array A = \r\n");
    printArray(aArray, n, m);
    printf("Array B = \r\n");
    printArray(bArray, n, m);
    printf("Array A + B = \r\n");
    double** summAB = getSumm(aArray, bArray, n, m);
    printArray(summAB, n, m);
    printf("max(A) = %lf, min(A) = %lf\r\n", getMax(aArray, n, m), getMin(aArray, n, m));
    printf("max(B) = %lf, min(B) = %lf\r\n", getMax(bArray, n, m), getMin(bArray, n, m));
    printf("max(A+B) = %lf, min(A+B) = %lf\r\n", getMax(summAB, n, m), getMin(summAB, n, m));
    printf("Determinant A + B = %lf\r\n", Determinant(summAB, n, m));
    system("Pause");
    for (int i = 0; i < n; i++)
    {
        delete[] aArray[i];
        delete[] bArray[i];
        delete[]summAB[i];
    }
    delete[] aArray;
    delete[] bArray;
    delete[]summAB;
    return 0;
}
Yandex
Объявления
26.01.2014, 20:48     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
Ответ Создать тему
Опции темы

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