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

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

Войти
Регистрация
Восстановить пароль
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
#1

Получить квадратную матрицу из двух других - C++

24.02.2014, 16:10. Просмотров 252. Ответов 7
Метки нет (Все метки)

Здравствуйте, уважаемые программисты. Прошу у вас помощи с программой:

Методические указания:
1. Ввод и вывод массива, а так же операции над матрицами оформить в виде функции, не возвращающих значение
2. При вводе, выводе и обработки матриц использовать указатели на массивы

Задание
Даны квадратные матрицы A,Bпорядка n. Получить матрицу C=Aт-Bт*C, где Aт и Bт - транспонированные матрицы
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 16:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить квадратную матрицу из двух других (C++):

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

Получить квадратную матрицу порядка n - C++
1 2 3 … n-2 n-1 n 2 3 4 … n-1 n 0 3 4 5 … n 0 0 . . … … . . n-1 n 0 … 0 0 0 n 0 0 … 0 0 0 помогите пожалуйста

Получить квадратную матрицу размерности N - C++
Получить квадратную матрицу размерности N:

Получить квадратную матрицу порядка n - C++
Получить квадратную матрицу порядка n. Помогите пожалуйста! Буду очень благодарен !

Получить квадратную матрицу порядка n - C++
Дана последовательность чисел b(11), b(22)...b(nn). Получить квадратную матрицу порядка n, элементами которой являются числа...

Получить квадратную матрицу порядка n - C++
Получить квадратную матрицу порядка n:

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
25.02.2014, 22:02  [ТС] #2
Написал собственный код, но он не хочет работать как положено

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
// lab_12_2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
 
#include <iostream> 
#include <cstdlib> 
#include <ctime>  
#include <iomanip>
using namespace std;  
 
int main() 
{   
    setlocale(0,"Rus"); 
    int matrix_A[5][5]; 
    int matrix_B[5][5];  
    int matrix_C[5][5]; 
    int matrix_X[5][5]; 
    int i, j, tmp;
 
    srand((unsigned) time(0));  
 
    for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
            matrix_A[i][j] = rand() % 100;  // заполняем первую матрицу случайными числами
 
    for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
            matrix_B[i][j] = rand() % 100;  // заполняем вторую матрицу
 
    cout << "A " << endl;
 
    for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
        {
               cout << setw(3) << matrix_A[i][j]; 
        }  
 
        cout << endl << endl; 
 
        cout << "B " << endl; // выводим вторую матрицу на экран
 
        for ( i = 0; i < 5; i++) 
            for ( j = 0; j < 5; j++) 
            { 
                cout << setw(3) << matrix_B[i][j]; 
            } 
             cout << endl << endl;
       cout << endl;
 
       for (int i = 0; i < 5; i++) 
    for (int j = 0; j < 5; j++) 
    { 
        tmp = matrix_A[i][j]; 
        matrix_A[i][j] = matrix_A[j][i]; 
        matrix_A[j][i] = tmp; 
    }
    
     for (int i = 0; i < 5; i++) 
    for (int j = 0; j < 5; j++) 
    { 
        tmp = matrix_B[i][j]; 
        matrix_B[i][j] = matrix_B[j][i]; 
        matrix_B[j][i] = tmp; 
    }
            for (int i = 0; i < 5; i++) 
    for (int j = 0; j < 5; j++) 
    matrix_C[i][j]+=matrix_A[i][j]*matrix_B[i][j];
 
        for (int i = 0; i < 5; i++) 
    for (int j = 0; j < 5; j++) 
        matrix_X[i][j]= matrix_A[j][i]-matrix_C[i][j];
 
       for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
        {
               cout <<"X"<< setw(3) << matrix_X[i][j]; 
        }  
     system("pause");
    return 0;
}
Добавлено через 1 час 28 минут
еще поправил, но как надо не работает

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
// lab_12_2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
 
#include <iostream> 
#include <cstdlib> 
#include <ctime>  
#include <iomanip>
using namespace std;  
 
int main() 
{   
    setlocale(0,"Rus"); 
    int matrix_A[5][5]; 
    int matrix_B[5][5];  
    int matrix_C[5][5]; 
    int matrix_X[5][5]; 
       int i, j, tmp;
 
    srand((unsigned) time(0));  
 
    for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
            matrix_A[i][j] = rand() % 100;  // заполняем первую матрицу случайными числами
 
    for ( i = 0; i < 5; i++) 
        for ( j = 0; j < 5; j++) 
            matrix_B[i][j] = rand() % 100;  // заполняем вторую матрицу
 
    cout << "A " << "\n";
     for ( i = 0; i < 5; i++) {
        for ( j = 0; j < 5; j++) 
                      cout << setw(3) << matrix_A[i][j]; 
        cout << endl << endl; }
 
        cout << "B " <<"\n"; // выводим вторую матрицу на экран
 
        for ( i = 0; i < 5; i++) {
            for ( j = 0; j < 5; j++) 
                     cout << setw(3) << matrix_B[i][j]; 
            cout << endl << endl;
            cout << endl;
        }
 
       for (int i = 0; i < 5; i++){ //транспонирование матрицы A
            for (int j = 0; j < 5; j++) {
                tmp=matrix_A[j][i];
                matrix_A[i][j] = matrix_A[j][i];
                matrix_A[j][i]=tmp;
            }
                   }
    
     for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) 
    { 
        tmp=matrix_B[i][j];
        matrix_B[i][j] = matrix_B[j][i]; 
        matrix_B[j][i]=tmp;
        }
     }
 
     for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) 
        matrix_C[i][j]+=matrix_A[i][j]*matrix_B[i][j];}
 
        for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) 
        matrix_X[i][j]= matrix_A[i][j]-matrix_C[i][j];}
 
        cout<<"X"<<endl;
       for ( i = 0; i < 5; i++) {
        for ( j = 0; j < 5; j++) 
              cout << matrix_X[i][j]; 
            cout << endl << endl;
            cout << endl;
              }
 
     system("pause");
    return 0;
}
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 19:00 #3
Цитата Сообщение от avatar1870 Посмотреть сообщение
1. Ввод и вывод массива, а так же операции над матрицами оформить в виде функции, не возвращающих значение
Поясни значение фразы: имеется ввиду использовать функции типа void...(...)? если да, то еще вопрос можно ли указатель на массив передать функции и работать с ним или надо объявить массив (указатель) глобальным и работать как с глобальным?

Добавлено через 2 минуты
Цитата Сообщение от avatar1870 Посмотреть сообщение
Даны квадратные матрицы A,Bпорядка n. Получить матрицу C=Aт-Bт*C, где Aт и Bт - транспонированные матрицы
А вот это я не понял вообще, тогда при чем здесь это и причем здесь в этом вопросе матрица А
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
26.02.2014, 19:07  [ТС] #4
Да, функции должны быть void, а в теме работы есть фраза - передача массивов функциям. А насчёт условия: нужно затранспонировать, перемножить и отнять матрицы
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 19:12 #5
Цитата Сообщение от mustimur Посмотреть сообщение
C=Aт-Bт*C,
А тут точно все правильно? Напоминает уравнение...
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
26.02.2014, 19:36  [ТС] #6
Вот условие:
Миниатюры
Получить квадратную матрицу из двух других  
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 20:19 #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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
using namespace std;
 void enter(int **M, int n)
{
for (int i=0;i<n;i++)
    for (int j=0;j<n;j++)
    {
        cout<<"Vvedit element matrici "<<i<<"x"j<<": ";
        cin>>M[i][j];
    }
}
 
void disp(int **M, int n)
{
for (int i=0;i<n;i++)
    for (int j=0;j<n;j++)
    {
        cout<<"Element matrici "<<i<<"x"j<<": "<<M[i][j]<<endl;
    }
}
 
void trans(int **M, int **M_t, int n)
{
for (int i=0;i<n;i++)
    for (int j=0;j<n;j++)
        M_t[j][i]=M[i][j];
}
void Umn(int **M, int **M1,int **Mr, int n)
{
for (int i=0;i<n;i++)
    for (int j=0;j<n;j++)
    {
        Mr[i][j]=0;
        for (int k=0; k<n; k++)
            Mr[i][j]+=M[i][k]*M1[k][j];
    }
}
void Fun(int **M, int **M1,int **Mr, int n)
{
for (int i=0;i<n;i++)
    for (int j=0;j<n;j++)
 
        Mr[i][j]=M[i][j]-M1[i][j];
 
 
}
 
int main()
{ 
int **A, **B, **C,**D,**E, **At,**Bt,n;
cout<<"Vvedit razmer matrici: ";
cin>>n;
A=new int* [n];
B=new int* [n];
C=new int* [n];
D=new int* [n];
E=new int* [n];
At=new int* [n];
Bt=new int* [n];
for (int i=0;i<n;i++)
{
    A[i]=new int [n];
    B[i]=new int [n];
    C[i]=new int [n];
    D[i]=new int [n];
    E[i]=new int [n];
    At[i]=new int [n];
    Bt[i]=new int [n];
 
}
enter(A,n);
enter(B,n);
trans(A,At,n);
trans(B,Bt,n);
Umn(Bt, A, D, n);
Fun(At, D,E, n);
disp(E, n);
for (int i=0;i<n;i++)
{
    delete [] A[i];
    delete [] B[i];
    delete [] C[i];
    delete [] D[i];
    delete [] E[i];
    delete [] At[i];
    delete [] Bt[i];
}
    delete [] A;
    delete [] B;
    delete [] C;
    delete [] D;
    delete [] E;
    delete [] A;
    delete [] B;
return 0;
}
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
26.02.2014, 20:41  [ТС] #8
Огромное вам спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 20:41
Привет! Вот еще темы с ответами:

Получить квадратную матрицу порядка n - C++
1 2............n-1 n n+1 n+2..........2n-1 2n 2n+1 2n+2..........3n-1 3n . ...

Получить квадратную матрицу размерности N: - C++
Получить квадратную матрицу размерности N:

Получить квадратную матрицу порядка n - C++
17) Получить квадратную матрицу порядка n 1 2 3 ... n-1 n 2 1 2 ... n-2 n-1 3 2 1 ... n-3 n-2 . . . . . . n-1 n-2 n-3 ... 1...

Получить квадратную матрицу по формулам - C++
Получить квадратную матрицу по формулам


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.02.2014, 20:41
Ответ Создать тему
Опции темы

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