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

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

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

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

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

Вычислить
Миниатюры
Вычисление матриц  
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
16.10.2010, 01:00  [ТС]     Вычисление матриц #21
Я незнаю, меняет ли ето дело, но я не дописал все задание. С клавиатури задание матрицы A(nxn)B(nxn).Вычеслить С
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.10.2010, 01:09     Вычисление матриц #22
Сейчас нет компилятора, потому не проверял!!!

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 <iostream>
#include <ctime>
 
 
using std::cout;
using std::cin;
using std::endl;
 
 
 void input(int **arr, int size)
  {
       for(int i=0; i<size; i++)
               {
                   for(int j=0; j<size; j++)
                    {
                         cout<<"Введите елемент ["<<i<<"]["<<j<<"]=";
                         cin>>arr[i][j];
                         cout<<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++)
                   {
                           C[i][j]=0;
                           At[i][j]=0;
                           temp[i][j]=0;
 
                   }
         }
         input(A,size);
         input(B,size);
         cout<<endl;
         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;
}
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
16.10.2010, 01:12  [ТС]     Вычисление матриц #23
А можна как то без етого
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
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++)
                   {
                           C[i][j]=0;
                           At[i][j]=0;
                           temp[i][j]=0;
 
                   }
         }
И без етого int **arr.... и тому подобние переменние без етих звездочок. мы просто ето не учили, мы писали типу int A[n][n], B[n][n]. Можете переделать очень прошу....=)
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.10.2010, 01:15     Вычисление матриц #24
Могу переделать, только когда поставлю IDE!!! Примерно завтра.
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
16.10.2010, 01:18  [ТС]     Вычисление матриц #25
о0 спасибо огромное, завтра напишите мне!=)))) Буду ждать=)))
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.10.2010, 10:33     Вычисление матриц #26
Какой то бред:

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
#include <iostream>
#include <ctime>
 
 
using std::cout;
using std::cin;
using std::endl;
 
 
 void input(int arr[100][100], int size)
  {
       for(int i=0; i<size; i++)
               {
                   for(int j=0; j<size; j++)
                    {
                         cout<<"Введите елемент ["<<i+1<<"]["<<j+1<<"]=";
                         cin>>arr[i][j];
                         cout<<endl;  
                         
                    }
 
          }
     
  }
 
 void output (int arr[100][100], 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[100][100], int arr2[100][100], int res[100][100], 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[100][100];
 }
int trans(int matr[100][100], int matr_tr[100][100], 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[100][100];
 }
 int rizn(int matr1[100][100], int res[100][100], 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[100][100];
 }
 int mult_ch(int matr[100][100], int res[100][100], 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[100][100];
 }
 
int main ()
{
         setlocale( LC_ALL,"Russian" );
         int size;
         int A[100][100], B[100][100], C[100][100], At[100][100], temp[100][100]; //опредиления указателей на матрицы
         cout<<"Введите розмер: ";
         cin>>size;
         cout<<"Матрица А:"<<endl;
         input(A,size);
         cout<<"Матрица B:"<<endl; 
         input(B,size);
         cout<<endl;
         system("cls");
         cout<<"Матрица А:"<<endl;
          output(A,size); //вывод матрицы А
         cout<<endl;
         cout<<"Матрица B:"<<endl;    
          output(B,size); //вывод матрицы А
         cout<<endl;
         cout<<"Матрица C:"<<endl;
          trans(A,At,size);
          mult(At,B,C,size); //А^t*B
          mult(B,B,At,size);
          mult_ch(At,A,size);//3*B^2
          rizn(A,C,size);
          mult(C,B,temp,size);//(A^t-3*B^2)*B
          output(temp,size); //вывод матрицы С*/
   system("PAUSE");
     return 0;
}
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
16.10.2010, 15:12  [ТС]     Вычисление матриц #27
Спасибо огромное=))))

Добавлено через 3 минуты
Что значит system("cls"); ?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.10.2010, 22:56     Вычисление матриц #28
Что значит system("cls"); ?
Очистка екрана!!!
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
17.10.2010, 00:47  [ТС]     Вычисление матриц #29
А зачем она нужна вопше, можна стереть?
И откуда мы взяли arr[100][100] вот ето 100?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 00:50     Вычисление матриц #30
Цитата Сообщение от Alston Посмотреть сообщение
А зачем она нужна вопше, можна стереть?
Да конечно, ето для удобства!!!

Добавлено через 1 минуту
Цитата Сообщение от Alston Посмотреть сообщение
И откуда мы взяли arr[100][100] вот ето 100?
Ета обявления матриц, 100 - максимальний размер(хотя используется только столько, сколько вы задаете ). Вы попросили без динамики, я сделал!!!
Alston
7 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 410
17.10.2010, 20:35  [ТС]     Вычисление матриц #31
А как будет выглядить с динамикой?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 20:43     Вычисление матриц #32
А как будет выглядить с динамикой?
Смотри 10 пост!!!
Анастасия)
Сообщений: n/a
03.11.2010, 17:19     Вычисление матриц #33
Плииз помогите!!!!!
Меняя местами строки матрицы, отсортировать по возрастанию ее первый столбец.
Напишите на мыло пплз anastacia06.11@mail.ru
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2010, 18:11     Вычисление матриц
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 653
03.11.2010, 18:11     Вычисление матриц #34
Огромное спасибо
Yandex
Объявления
03.11.2010, 18:11     Вычисление матриц
Ответ Создать тему
Опции темы

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