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

Умножение массивов - C++

Восстановить пароль Регистрация
 
Mustakilloff
 Аватар для Mustakilloff
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 35
17.03.2014, 16:59     Умножение массивов #1
Всем привет..
Помогите, пожалуйста с программой:
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <stdio.h>
 
using namespace std;
int main() {
                setlocale(LC_ALL, "Russian"); 
 
int A[3][1]={{1},{1},{1}};
int B[2][3]={{1,2,0},{0,1,2}}; 
 
 
 //транспонирование матрицы А
 int transA[1][3];
 for ( int i = 0; i < 3; ++i )
        for ( int j = 0; j < 1; ++j )
            transA[j][3 - 1 - i] = A[i][j];
 
 
 cout << "A:" << endl;
    for ( int i = 0; i < 3; ++i ) {
        for ( int j = 0; j < 1; ++j )
            cout << A[i][j] << " ";
        cout << endl;
    }
        cout << "transA:" << endl;
    for ( int i = 0; i < 1; ++i ) {
        for ( int j = 0; j < 3; ++j )
            cout << transA[i][j] << " ";
        cout << endl;
    }
    //транспонирование матрицы B
 int transB[3][2];
 for ( int i = 0; i < 2; ++i )
        for ( int j = 0; j < 1; ++j )
            transB[j][2 - 1 - i] = B[i][j];
 
 cout << "B:" << endl;
    for ( int i = 0; i < 2; ++i ) {
        for ( int j = 0; j < 3; ++j )
            cout << B[i][j] << " ";
        cout << endl;}
 cout << "transB:" << endl;
    for ( int i = 0; i < 3; ++i ) {
        for ( int j = 0; j < 2; ++j )
            cout << transB[i][j] << " ";
        cout << endl;}
 
    //Вывод матрицы С на экран 
}
void umnojenie(int k, lk, jk,c1)
    C=new int*[3];
      for(int i=0,j=0,lk=0,jk=0;i<3;i++) 
     { 
     for(jk=0;jk<1;jk++)    { 
       for(j=0;j<3;j++) 
{  k+=B[i][j]*transB[i][j]*transA[j][jk];} 
      
  c1[i][jk]=k; 
   cout<<c1[i][jk]<<"\n Матрица C"; 
  k =0;       } 
   } 
      std::system("pause");
    getch()
        
}
При транспонировании матрицы B выводит каку..
http://www.cyberforum.ru/attachment....1&d=1395061045

А с умножением вообще не могу разобраться...
ХЕЛП!
Миниатюры
Умножение массивов  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 16:59     Умножение массивов
Посмотрите здесь:

Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные C++
C++ Умножение 2-ух массивов поэлементно
C++ Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
C++ Сравнение массивов: найти максимальное перебором массивов
Класс Квадратная матрица. Методы: умножение на матрицу, умножение на константу, вывод элементов матрицы на дисплей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
17.03.2014, 17:19     Умножение массивов #2
void umnojenie(int k, lk, jk,c1)
Это что за кусок? Вы объявляете функцию? Тогда почему не открыта скобка фигурная? И какое задание?

Добавлено через 3 минуты
И что это за параметры такие?..

Добавлено через 12 минут
Транспонирование починила. А что и на что нужно умножить? Ибо тот рудимент внизу непонятно что должен был делать.
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <stdio.h>
 
using namespace std;
 
 
int main() {
setlocale(LC_ALL, "Russian"); 
 
int A[3][1]={{1},{1},{1}};
int B[2][3]={{1,2,0},{0,1,2}}; 
 
 //транспонирование матрицы А
 int transA[1][3];
 for ( int i = 0; i < 3; ++i )
        for ( int j = 0; j < 1; ++j )
            transA[j][i] = A[i][j];
 
 cout << "A:" << endl;
    for ( int i = 0; i < 3; ++i ) {
        for ( int j = 0; j < 1; ++j )
            cout << A[i][j] << " ";
        cout << endl;
    }
        cout << "transA:" << endl;
    for ( int i = 0; i < 1; ++i ) {
        for ( int j = 0; j < 3; ++j )
            cout << transA[i][j] << " ";
        cout << endl;
    }
    //транспонирование матрицы B
 int transB[3][2];
 for ( int i = 0; i < 3; ++i )
        for ( int j = 0; j < 2; ++j )
            transB[i][j] = B[j][i];
 
 cout << "B:" << endl;
    for ( int i = 0; i < 2; ++i ) {
        for ( int j = 0; j < 3; ++j )
            cout << B[i][j] << " ";
        cout << endl;
    }
 
 cout << "transB:" << endl;
    for ( int i = 0; i < 3; ++i ) 
    {
        for ( int j = 0; j < 2; ++j )
            cout << transB[i][j] << " ";
        cout << endl;
    }
 
      std::system("pause");
      getch();
}
Mustakilloff
 Аватар для Mustakilloff
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 35
17.03.2014, 17:46  [ТС]     Умножение массивов #3
Задание:
C=AТ*BТ*B;
фигурную скобку поставить забыл..
Параметры... Ну я "Объявил" k, lk, jk,c1..
Может, будет лучше сделать отдельно произведение AТ*BТ, а затем его помножить на В?
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
17.03.2014, 17:48     Умножение массивов #4
Вектора не проходили? С ними было бы всё проще.
А так - да. Лучше сделать просто функцию, которая будет перемножать две матрицы. Универсальную функцию.
Mustakilloff
 Аватар для Mustakilloff
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 35
19.03.2014, 10:37  [ТС]     Умножение массивов #5
Тамика, а как, собственно, эту функцию представить?
Написал тут... Бурду..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void umnojenie1(int c1[i][j]);
 c1=new int c1*[3];
 {
     for(int i=0,j=0,i<3;i++) 
     k=0;
     {  k+=transB[i][j]*transA[j][i];}
     c1[i][j]=k;
 }
 
getch();
     void umnojenie2();
    {
        c=new int C*[3];
     for(int i=0,j=0,i<3;i++) 
     m=0;
     {  m+=B[i][j]*c1[j][i];}
     C[i][j]=m;
     
     system("pause");
     getch()
}
Добавлено через 19 часов 52 минуты
Нарооод) исправьте, пожалуйста!!!
Mustakilloff
 Аватар для Mustakilloff
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 35
24.03.2014, 22:36  [ТС]     Умножение массивов #6
поможет кто?...
Fakeoke
307 / 307 / 94
Регистрация: 28.07.2011
Сообщений: 1,818
24.03.2014, 23:01     Умножение массивов #7
http://www.cyberforum.ru/cpp/thread265201.html
Умножение двух матриц на С++
погуглить несудьба?
Mustakilloff
 Аватар для Mustakilloff
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 35
25.03.2014, 07:54  [ТС]     Умножение массивов #8
Fakeoke, уважаемый, если вы полистаете тему, то увидите, что я уже выкладывал свой вариант умножения 3 матриц... У меня там много ошибок в коде, но, т.к. я не опытный программист, для меня неведом способ исправления..

Добавлено через 1 час 0 минут
Вот, написал программу, она работает.. Но работает хреново.. при транспонировании и умножении выводит огромные числа (-850513241).. Исправьте, пожалуйста!
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
 
{// Определение переменных
 
int A[3][1]={{1},{1},{1}};
int b[2][3]={{1,2,0},{0,1,2}};
int c[3][3],d[3][3],c1[3][3],transA[3][3],i,j,f,l,r;
 
// Транспонирование матрицы В
for (i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{d[j][i]=b[i][j];}
}
// Транспонирование матрицы A
for (i=0;i<=3;i++)
{
for(j=0;j<=1;j++)
{transA[j][i]=A[i][j];}
}
// Умножение матриц В на В транспонированную
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
f=0;
for (l=0;l<=3;l++)
{
f=f+b[i][l]*d[l][j];
}
c1[i][j]=f;
}
}
 
for (i=0;i<=3;i++)
{
for(j=0;j<=2;j++)
    
cout<<setw(3)<<d[i][j];
cout<<endl;
}
 
//umn..
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
r=0;
for (l=0;l<=3;l++)
{
r=r+c1[i][l]*transA[l][j];
}
c[i][j]=r;
}
}
// Вывод матрицы C на экран
 
cout<<"matrica C: \n";
cout<<endl;
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
cout<<setw(2)<<c[i][j];
cout<<endl;
}
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 17:03     Умножение массивов
Еще ссылки по теме:

C++ Задано 4 матрицы. Провести сложение, умножение, умножение на число
В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов C++
В каждом из заданных массивов найти наибольшее значение, и разделить на него все элементы массивов C++

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

Или воспользуйтесь поиском по форуму:
Fakeoke
307 / 307 / 94
Регистрация: 28.07.2011
Сообщений: 1,818
25.03.2014, 17:03     Умножение массивов #9
был диалог
-Лучше сделать просто функцию, которая будет перемножать две матрицы.
- а как, собственно, эту функцию представить?
я вам и скинул примеры как...

берете эту функцию, вставляете свою программу...
сначала умножаете первые 2 между собой, потом результат на третью, вот вам перемножение трех матриц
Yandex
Объявления
25.03.2014, 17:03     Умножение массивов
Ответ Создать тему
Опции темы

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