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

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

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

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

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

Вычислить
Миниатюры
Вычисление матриц  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 22:02     Вычисление матриц
Посмотрите здесь:

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

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

Суммирование матриц - C++
Напишите программу, которая суммирует матрицы. Размер матриц произвольный. Значения вводятся с клавиатуры

Умножение матриц - C++
#include <iostream> #include <ctime> // в ней функция time #include <conio.h> #include <stdio.h> using namespace std; void...

Умножение матриц - C++
Ошибка: не хочет умножать. c=c+a*b; int **mat(int n){ int **matrix; matrix=new int *; for (int i=0; i<2; i++) ...

Решение матриц - C++
Самое сложное, наверное что может быть, это решение матриц.. Прошу у Вас помощи, многоуважаемые товарищи программисты! Буду очень...

Умножение матриц - C++
Я юзаю Qt, но пишу сюда т.к. он никак не влияет на код (почти) У меня есть две матрицы A и B (размерность обеих 800х800). Чтобы получить...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
885 / 779 / 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
885 / 779 / 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
885 / 779 / 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
885 / 779 / 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
885 / 779 / 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
ниначмуроФ
834 / 518 / 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
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
14.10.2010, 18:02     Вычисление матриц #14
Цитата Сообщение от Alston Посмотреть сообщение
Напишиет кто то попроще пожалуста...=)
проще наверно некуда...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2010, 18:02     Вычисление матриц
Еще ссылки по теме:

Класс матриц - C++
Пишу класс для работы с матрицами . Не могу понять , почему не работают функции power и swap_rows (функции возвращают ту же матрицу без...

Обработка матриц - С++ - C++
Вот задача нужно решить - С++. Не могу решить, не получается... Найти наибольший и наименьший элементы матрицы и поменять местами...

Умножение матриц - C++
Ох уж этот универ... Короче, дела обстоят так: Перемножить матрицы А размером nхm и В размером mхl. Элементы результирующей матрицы...

Умножение матриц - C++
Доброго времени суток:) Помогите пожалуйста в написании программы. Пользователь вводит Матрицу А(размер 2х2) и Матрицу В(размер 2х2). ...

Сортировка матриц - C++
Дана матрица NxM вывести матрицу, определяющую знак перед числом. Например: -1 2 -3 4 -5 6 -1 -2 3 -4 5 -6 полученная матрица:...


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

Или воспользуйтесь поиском по форуму:
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 18:02     Вычисление матриц #15
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
Зачем принимать int **res?
Для того, что бы в res записивать результат умножения!!!
Yandex
Объявления
14.10.2010, 18:02     Вычисление матриц
Ответ Создать тему
Опции темы

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