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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Размер массива http://www.cyberforum.ru/cpp-beginners/thread1081638.html
Здрасте. Такой вопрос.Можно ли каким то образом вывести число элементов массива,то есть его размер? Допустим int arr; Программа должна вывести размер "5".
C++ Число изъять из множества А, если оно является элементом множества А, но не является элементом множества В Введено с клавиатуры число изъять из множества А, если оно является элементом множества А, но не является элементом множества В. Пожалуйста помогите написать программу! На С++, буду очень признателен и благодарен откликнувшимся программистам. Спасибо за внимание. http://www.cyberforum.ru/cpp-beginners/thread1081606.html
C++ Функции работы с потоками
На WInAPI есть функции приостановление и восстановление потоков - SuspendThread() и ResumeThread() Вопрос:есть ли что нибудь подобное в стандартной библиотеки C++?
Табулирование функции и cout.precision(2) C++
зачем здесь добавляют 0.75??? нужно протаболюваты функцию 2cosx krok= pi/4; #include<>.... void main() { ofstream tabfile("tabul.txt",ios::out); const float pi=3.1415926; float x=-p , h=pi/4,y,max,xmax;
C++ Контейнер unordered_map, содержащий потоки http://www.cyberforum.ru/cpp-beginners/thread1081588.html
постановка задачи: есть некий класс Item class Item { private: int id; string text; public: Item() {
C++ Для изменяющегося x от a до b Помогите написать программу подробнее

Показать сообщение отдельно
Kill100
 Аватар для Kill100
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,060
Завершенные тесты: 1
26.01.2014, 20:48     Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
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;
}
 
Текущее время: 01:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru