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

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

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

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

26.01.2014, 19:52. Просмотров 433. Ответов 3
Метки нет (Все метки)

Так сложилось что в понедельник нужно сдать эту лабораторную работу иначе меня исключат из университета, а так как я не очень разбираюсь с массивами то у меня большая проблема.
Пожалуйста помогите неопытному студенту решить эту задачу.
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. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
Посмотрите здесь:

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

Найти наименьшие элементы матрицы - C++
Всем привет! Ребят помогите пожалуйста с заданием :) Найти наименьшие элементы в каждой строке матрицы и номер максимального с них. Саму...

Найти наибольшие элементы каждой строки матрицы - C++
Найти наибольшие элементы каждой строки матрицы Х(4х5) и записать их в массив Y. помогите пожалуйста, максимально простым способом

Найти наибольшие элементы каждой строки матрицы - C++
Вот программу, которую нужно сдать завтра, на С++, не успеваю вообще, помогите пожалуйста! Дана действительная матрица A(n*m). Получить...

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

Наибольшие и наименьшие значения, на вашей системе, следующих типов - C++
Здравствуйте, Читаю книгу Б.Страуструпа &quot;Язык С++&quot;. Там упражнение: &quot;8. (*2) Каковы наибольшие и наименьшие значения, на вашей системе,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kill100
401 / 267 / 37
Регистрация: 11.12.2010
Сообщений: 1,133
Завершенные тесты: 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 = множество С, с которого нужно найти определитель.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2014, 20:48     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
Еще ссылки по теме:

Суммировать наибольшие элементы столбцов матрицы - C++
Помогите решить задачу : Дана матрица А(nxn). Получить x1xn+x2xn-1+…+xnx1, где xk – наибольшее значение элементов k-го столбца данной...

Поменять местами наибольшие элементы в верхней и нижней половинах матрицы - C++
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов...

Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы) - C++
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов...

Найти наименьшие элементы в каждой матрице и напечатать их номера - C++
Даны одномерные массивы A, B, C. Записать их в виде матриц AA , BB , CC , найти наименьшие элементы в каждой и напечатать их номера. не...


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

Или воспользуйтесь поиском по форуму:
Kill100
401 / 267 / 37
Регистрация: 11.12.2010
Сообщений: 1,133
Завершенные тесты: 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. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
Ответ Создать тему
Опции темы

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