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

Умножение матриц - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
16.11.2011, 11:54     Умножение матриц #1
Доброго времени суток Помогите пожалуйста в написании программы.
Пользователь вводит Матрицу А(размер 2х2) и Матрицу В(размер 2х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
#include <stdio.h>
#include <conio.h>
 
int main (void)
{
    const int n=2;
    int a[n][n];
    int b[n][n];
    int c[n][n];
    int i1=0, j1=0, i2=0, j2=0, i3=0, j3=0;
    
    printf ("BBeguTe Matrix A:\n");
    for(i1=0; i1<n; i1++)
    {
        for(j1=0; j1<n; j1++)
        scanf("%d", &a[i1][j1]);
    }   
    
    printf ("BBeguTe Matrix B:\n");
    for(i2=0; i2<n; i2++)
    {
        for(j2=0; j2<n; j2++)
        scanf("%d", &b[i2][j2]);
    }   
 
    for (i3=0; i3<n; i3++)
    {
        for (j3=0; j3<n; j3++)
            c[i3][j3]=a[i1][j1]+b[i2][j2];
    }
 
    printf ("Matrix C=\n");
    for(i3=0; i3<n; i3++)
    {
        for(j3=0; j3<n; j3++)
            printf ("%d", a[i1][j1]*b[i2][j2]);
    }   
    getch();
    return 1;
}
P.S. Не ругайтесь, что мол много таких тем, я их все просматривал, но так и не понял в чём ошибка. =(
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 11:54     Умножение матриц
Посмотрите здесь:

Умножение матриц C++
Умножение матриц C++
Умножение матриц C++
C++ Умножение треугольных матриц«Методы обработки разреженных матриц»
Умножение матриц C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ropsat
 Аватар для Ropsat
28 / 28 / 1
Регистрация: 04.03.2011
Сообщений: 67
16.11.2011, 12:45     Умножение матриц #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
#include <stdio.h>
#include <conio.h>
 
int main (void)
{
        const int n=2;
        int a[n][n],b[n][n],c[n][n];
        int i,j;
        
        printf ("BBeguTe Matrix A:\n");
        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                scanf("%d", &a[i][j]);
        }       
        
        printf ("BBeguTe Matrix B:\n");
        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                scanf("%d", &b[i][j]);
        }       
 
        for (i=0; i<n; i++)
        {
                for (j=0; j<n; j++)
                        c[i][j]=a[i][j]*b[i][j];
        }
 
        printf ("Matrix C=\n");
        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                        printf ("%2d ",c[i][j]);
                putchar('\n');
        }       
        getch();
        return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.11.2011, 13:15     Умножение матриц #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ropsat, мне кажется, что матрицы немного не так перемножаются (строка на столбец)
могу сбросить код, если он нужен ТС

Добавлено через 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 2
#define m 5
#define k 3
 
int main ()
{ int a[n][m], b[m][k], c[n][k],i,j,z;
 
srand(time(NULL));
for (i=0;i<n;i++) // ввод рандомом
for (j=0;j<m;j++)
     a[i][j]=rand ()%5;
 
for (i=0;i<m;i++)
for (j=0;j<k;j++)
b[i][j]=rand ()%5;
 
 
for (i=0;i<n;i++)
for (j=0;j<k;j++)
{ c[i][j]=0; //обнуляем элемент, в который будет производится запись перемножения строка на //столбец
for (z=0;z<m;z++)
c[i][j]+=a[i][z]*b[z][j]; //записываем сумму умножая поочередно элементы строки и столбца
}
 
 
for (i=0;i<n;i++)
{ puts ("\n");
for (j=0;j<k;j++)
printf ("%10d", c[i][j]);
}
 
system ("Pause");
return 0;
}
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
17.11.2011, 11:19  [ТС]     Умножение матриц #4
Я не совсем пойму что такое
C++
1
2
3
#define n 2
#define m 5
#define k 3
И можно ли без него обойтись?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 17:26     Умножение матриц #5
Цитата Сообщение от b0n4b Посмотреть сообщение
И можно ли без него обойтись?
Это директива препроцессора, она используется для создания константы
Делайте как вам угодно...
Ayrmax
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 85
25.08.2015, 11:45     Умножение матриц #6
как реализовать через функцию ????
Yandex
Объявления
25.08.2015, 11:45     Умножение матриц
Ответ Создать тему
Опции темы

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