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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.81
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
#1

Вычисление матриц - C++

12.10.2010, 22:02. Просмотров 6658. Ответов 33
Метки нет (Все метки)

Вычислить
Миниатюры
Вычисление матриц  
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.10.2010, 23:58     Вычисление матриц #2
Могу скинуть исходник, там есть транспонирование, умножение.
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:01  [ТС]     Вычисление матриц #3
спасибо, но можете сделать очень прошу?=)
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:05     Вычисление матриц #4
На когда надо?
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:18  [ТС]     Вычисление матриц #5
на завтра=(((
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:22     Вычисление матриц #6
На завтра никак, нету время.

Добавлено через 1 минуту
Почему раньше не выложили заданее?
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:22  [ТС]     Вычисление матриц #7
а когда сможеш?

Добавлено через 40 секунд
Сегодня только дали... Что то придумаю, к пятнице сделаете?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:24     Вычисление матриц #8
Если никто не зделает раньше, тогда к пятнице.
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:24  [ТС]     Вычисление матриц #9
хорошо=)
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 17:48     Вычисление матриц #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Может кто лутше вариант посоветует

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
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
 
 void output (int **arr, int size)// функция вывода матриц
 {
     for(int i=0; i<size; i++)
     {
           for(int j=0; j<size; j++)
            {
               cout<<arr[i][j]<<" ";
            }
 
            cout<<endl;
     }
 
 }
 int** mult(int **arr1, int **arr2, int **res, int size) // функция  умножения двух матриц 
 {  
    for ( int i=0; i<size; i++)
      {
        for (int j=0; j<size; j++)
          {
             for (int k=0; k<size; k++)
               {
                  res[i][j] += arr1[i][k] * arr2[k][j];// присвоения результата умножения матрице С
                  
               }
             //cout<<res[i][j]<<"  ";
          }
        //cout<<endl;
       } 
    return res;
 }
 int** trans(int **matr, int **matr_tr, int size) // функция транспонирования матриц 
 {
       for(int i=0; i<size; i++)
          {
            for(int j=0; j<size; j++)
               {
                  matr_tr[i][j]=matr[j][i];
               }
          }
     return matr_tr;
 }
 int** rizn(int **matr1, int **res, int size) //функция вычитания матриц
 {
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
         {
             res[i][j]=res[i][j]-matr1[i][j];
         }
     }
     return res;
 }
 int** mult_ch(int **matr, int **res, int size) //функция умножения матрицы на число
 {
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
         {
             res[i][j]=3*(matr[i][j]);
         }
     }
     return res;
 }
int main ()
{
     srand((unsigned int)time(NULL));
      setlocale( LC_ALL,"Russian" );
     int size,i,j;
     int **A, **B, **C, **At, **temp; //опредиления указателей на матрицы
     cout<<"Введите розмер: ";
         cin>>size;
     A = new int*[size]; //выделение памяти под строки матриц
         B = new int*[size]; 
         C = new int*[size]; 
         At = new int*[size]; 
         temp = new int*[size];
     for(i=0; i<size; i++)
     {
           A[i]= new int[size]; //выделение памяти под столбцы матриц
                   B[i]= new int[size]; 
                   C[i]= new int[size]; 
                   At[i] = new int[size];  
                   temp[i] = new int[size];
         for(j=0; j<size; j++)
           {
               A[i][j]=rand()%5; //заполнение матриц А и В случайными числами
               B[i][j]=rand()%5;
               C[i][j]=0;
               At[i][j]=0;
               temp[i][j]=0;
 
           }
     }
     cout<<"Матрица А:"<<endl;
     output(A,size); //вывод матрицы А
     cout<<endl;
     cout<<"Матрица B:"<<endl;
     output(B,size); //вывод матрицы А
     cout<<endl;
     cout<<"Матрица C:"<<endl;
     mult((trans(A,At,size)),B,C,size); //А^t*B 
     mult_ch((mult(B,B,At,size)),A,size);//3*B^2
     mult((rizn(A,C,size)),B,temp,size);//(A^t-3*B^2)*B
     output(temp,size); //вывод матрицы С
//очистка памяти  
for(i=0; i<size; i++)
    {
      delete A[i], B[i], C[i], At[i];
    }
     delete [] A;
     delete [] B;
     delete [] C;
     delete [] At;
     delete [] temp;     
     system("PAUSE");
     return 0;
}
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
14.10.2010, 17:55     Вычисление матриц #11
а если матрицы не квадратные?
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
14.10.2010, 17:59     Вычисление матриц #12
Цитата Сообщение от MILAN Посмотреть сообщение
Может кто лутше вариант посоветует

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 int** mult(int **arr1, int **arr2, int **res, int size) // функция  умножения двух матриц 
 {  
    for ( int i=0; i<size; i++)
      {
        for (int j=0; j<size; j++)
          {
             for (int k=0; k<size; k++)
               {
                  res[i][j] += arr1[i][k] * arr2[k][j];// присвоения результата умножения матрице С
                  
               }
             //cout<<res[i][j]<<"  ";
          }
        //cout<<endl;
       } 
    return res;
 }
Зачем принимать int **res?
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:01  [ТС]     Вычисление матриц #13
Напишиет кто то попроще пожалуста...=)
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
14.10.2010, 18:02     Вычисление матриц #14
Цитата Сообщение от Alston Посмотреть сообщение
Напишиет кто то попроще пожалуста...=)
проще наверно некуда...
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 18:02     Вычисление матриц #15
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
Зачем принимать int **res?
Для того, что бы в res записивать результат умножения!!!
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:03  [ТС]     Вычисление матриц #16
без всяких подключеный руссково языка и тому подобное, переменние нормальние...
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
14.10.2010, 18:11     Вычисление матриц #17
Я когда писал что-то подобное, я примерно так же делал, проще наверное действительно некуда...


Alston, а что вас в переменных не устраивает? что по-вашему "нормальные"? "Подключение русского языка" занимает ровно строчку - вызывается единственная функция... В чём проблема, тоже непонятно...
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:13  [ТС]     Вычисление матриц #18
что значат ети ** нпример **arr1
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 18:14     Вычисление матриц #19
Цитата Сообщение от Alston Посмотреть сообщение
что значат ети ** нпример **arr1
указатель на матрицу!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2010, 18:18     Вычисление матриц
Еще ссылки по теме:

Решение матриц C++
Построение матриц C++
Обход матриц и вычисление значений C++
Класс матриц C++
C++ Транспонирование матриц. Произведение транспонированных матриц

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

Или воспользуйтесь поиском по форуму:
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:18  [ТС]     Вычисление матриц #20
спасибо
Yandex
Объявления
14.10.2010, 18:18     Вычисление матриц
Ответ Создать тему
Опции темы

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