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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив: Написать функцию, которая меняет значения диагональных элементов матрицы на значения соответствующих элементов заданного одномерного массива http://www.cyberforum.ru/cpp-beginners/thread783068.html
Очень нужна ваша помощь!!!!! Написать функцию, которая меняет значения диагональных элементов квадратной матрицы на значения соответствующих элементов заданного одномерного массива. Написать программу, которая описывает двухмерный массив А размерностью 3*3 и одномерный В размерностью 3, инициализировав последний массив значениями 5,3,7, а первый ввести с клавиатуры. Применить к массиву А...
C++ Программирование разветвляющихся алгоритмов (Вычислить стороны параллелограмма) Помогите пожалуйста Решить задачу на языке С++ . Вычислить стороны параллелограмма с диагоналями с=7,13м и d=5,625м если угол между ними равен 110 градусов 15 минут.Написать универсальную программу решающую задачу для произвольных значений указанных параметров.(При этом программа должна запрашивать и проверять данные на допустимость(для углов-отдельно градусы и минуты,затем переводить градусную... http://www.cyberforum.ru/cpp-beginners/thread783066.html
C++ Разделение произвольного текста на слова
Пытаюсь разделить произвольный текст на отдельные слова. И присвоить каждое слово элементу структуры. Но когда программа проходит первую строчку текста появляется ошибка, неизвестная мне. Вот часть кода. void vvod(str *mas, FILE *fp, char *name) { char seps = " .,!\n"; int numWords = 0; char masStr; fp=fopen(name,"r");
C++ Модулярная Арифметика (Создать функцию для решения поставленной задачи)
Помогите решить задачу: Создать функцию без использования рекурсии для решения поставленной в варианте задачи и использовать в программе. 1) a*x≡b mod n
C++ Не могу понять из-за чего ошибка http://www.cyberforum.ru/cpp-beginners/thread783045.html
Я новичёк,школьник ещё,перешёл с паскаля. Среда Visual C++ 2010. Вот код. Одна из базовых задач,нахождение кратчайшего пути в лабиринте. Выдаёт ошибку о выходе за пределы массива "a". Я обнёс его по краям такими значениями,чтобы туда в ходе программы не заходило,+поставил дополнительные if. Всё считает,успевает вывести,и в самом конце,после return 0 выскакивает эта ошибка(прогонял пошагово...
C++ Почему рандомное число всегда равно 22? #include <iostream> #include <ctime> using namespace std; int main () { // нужны две константы (Ширины и высоты поля) const int Width (20), Height (10); //ширина и высота const char Live ('#'), Dead ('*'); // мертвые и живые клетки подробнее

Показать сообщение отдельно
stepan a
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 9

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

11.02.2013, 07:37. Просмотров 353. Ответов 0
Метки (Все метки)

не могу разобраться с умножением трех матриц, написал программу считает не правильно ошибку найти не могу уже мозг кипит
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
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main(void)
{// Определение переменных
    int c[1][3],d[2][3],e[1][3],i,j,f,l,m1,n1,p1;
    int a[3][1] = {{1},{1},{1}};
    int b[2][3] = {{ 1, 2, 0},{ 0, 1, 2}};
    m1 = 3;
    n1 = 2;
   p1 = 1;
    printf("Matrica A: \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            cout<<setw(p1)<<a[i][j];
            cout<<endl;
    }
     // Транспонирование матрицы A
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            {e[j][i]=a[i][j];}
    }
 
    // Вывод матрицы A транспонированной на экран
    printf("Matrica A(T): \n");
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<e[i][j];
        cout<<endl;
    }
        // Вывод матрицы B на экран
    printf("Matrica B: \n");
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<b[i][j];
        cout<<endl;
    }
 
    // Транспонирование матрицы В
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
            {d[j][i]=b[i][j];}
    }
 
    // Вывод матрицы B транспонированной на экран
    printf("Matrica B(T): \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
        cout<<setw(n1)<<d[i][j];
        cout<<endl;
    }
 
    // умножение матриц
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        {
            c[i][j]=e[j][i]*d[j][i]*b[i][j];
        }
    }
 
    // Вывод матрицы C на экран
        printf("Matrica C: \n");
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<c[i][j]<<" ";
        cout<<endl;
    }
 
    getch();
}
Добавлено через 23 часа 7 минут
все нашел ошибку все работает

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
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main(void)
{// Определение переменных
    int c[1][3],d[3][2],e[1][3],i,j,l,k,m1,n1,p1;
    int a[3][1] = {{1},{1},{1}};
    int b[2][3] = {{ 1, 2, 0},{ 0, 1, 2}};
    m1 = 3;
    n1 = 2;
   p1 = 1;
    printf("Matrica A: \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            cout<<setw(p1)<<a[i][j];
            cout<<endl;
    }
     // Транспонирование матрицы A
    for (i=0;i<m1;i++)
    {
        for(j=0;j<p1;j++)
            {e[j][i]=a[i][j];}
    }
 
    // Вывод матрицы A транспонированной на экран
    printf("Matrica A(T): \n");
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<e[i][j];
        cout<<endl;
    }
        // Вывод матрицы B на экран
    printf("Matrica B: \n");
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<b[i][j];
        cout<<endl;
    }
 
    // Транспонирование матрицы В
    for (i=0;i<n1;i++)
    {
        for(j=0;j<m1;j++)
            {d[j][i]=b[i][j];}
    }
 
    // Вывод матрицы B транспонированной на экран
    printf("Matrica B(T): \n");
    for (i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
        cout<<setw(n1)<<d[i][j];
        cout<<endl;
    }
   // Умножение матриц
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        {
          c[i][j]=0;
            for ( k=0;k<m1;k++)
                    for ( l=0;l<n1;l++)
            {
            c[i][j]+=e[i][k]*d[k][l]*b[l][j];
      }
    }
 }
    // Вывод матрицы C на экран
        printf("Matrica C: \n");
 
    for (i=0;i<p1;i++)
    {
        for(j=0;j<m1;j++)
        cout<<setw(m1)<<c[i][j]<<" ";
        cout<<endl;
    }
 
    getch();
 
}
    
}
[/QUOTE]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru