Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнение массива числами и сортировка http://www.cyberforum.ru/cpp-beginners/thread852834.html
Есть следующая задача: "Объявите двумерный вещественный массив, в котором n*m элементов. Заполните его числами полученными по закономерности: a(ij(а итое джейтое) = сумма (над суммой буква i под...
C++ Некорректно записываются числа в файл Всем привет и с наступающими праздниками. Имеется задание: надо записать в файл строки и числа, введенные с клавиатуры. Должно быть что-то вроде Ivanov Ivan 170 65 4587, а в файл записывается... http://www.cyberforum.ru/cpp-beginners/thread852833.html
C++ Для каждого числа последовательности вывести новое число, которое получится после записи цифр числа в обратном порядке
Пожалуйста, напишите программы в С++ по функциям!). 29. Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое получится после записи цифр...
конкатенация строк C++
Подскажите, почему не компилируется код: std::string ExtractFileName(std::string filename) { if (filename.size() == 0) return ""; int i = filename.size(); std::string...
C++ Как запустить программу из программы на C++ http://www.cyberforum.ru/cpp-beginners/thread852818.html
Как из программы , написанной на с++ запустить другую программу(передать ей аргументы) и получить результат обратно в первую программу?
C++ Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) Помогите с задачей. Надо вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка. подробнее

Показать сообщение отдельно
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72

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

30.04.2013, 15:20. Просмотров 462. Ответов 5
Метки (Все метки)

Не могу разобраться с умножением матриц
Выдает либо числовой мусор, либо просто нули...
Вот код:
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
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
//---------------------------------------------------------------------------
enum {max_size=10};
struct Matrix {
        double coef[max_size][max_size];
        int sx, sy;
        };
 
void CreatMatrix(Matrix &m, int a, int b);
void PrintMatrix(const Matrix &);
 
void SummMatrix(
        const Matrix & m1,
        const Matrix & m2,
                Matrix & res);
void MultMatrix(
                const Matrix & m1,
                const Matrix & m2,
                Matrix & mres);
 
//---------------------------------------------------------------------------
void main() {
  clrscr();
  int n,qn,a,b,d,c;
  double tmp;
  cout <<"Enter size matrix A\n";
  cin >>a >> b;
  cout <<"Enter size matrix B\n";
  cin>> c >> d;
  clrscr();
  Matrix q1,q2,qSum,qMult;
/*  q1.sx=a; q1.sy=b;
  q2.sx=c; q2.sy=d;
   */
  cout << "Press Matrix A" << "\n";
  CreatMatrix(q1,a,b);
  cout << "Press matrix B" << "\n";
  CreatMatrix(q2,c,d);
  cout <<"\nMatrix A\n";
  PrintMatrix(q1);
  cout <<"\nMatrix B\n";
  PrintMatrix(q2);
  cout <<"\n\tMenu!\n 1.Sum of Matrix;\n 2.Multiplication of Matrix;\n 3.Exit\n";
  cout <<"=>: ";
  cin >>n;
  switch(n) {
    case 1: if (q1.sx!=q2.sx && q1.sy!=q2.sy) {cout <<"Sum - impossible, select 4!\n";
                         break;}
      SummMatrix(q1,q2,qSum);
      PrintMatrix(qSum);
      break;
  case 2: if (q1.sx!=q2.sy) {cout <<"Multiplication - impossible, select 4!\n";
                break;}
      MultMatrix(q1,q2,qMult);
      PrintMatrix(qMult);
      break;
    }
    getch();
}
 
void CreatMatrix(Matrix &m, int a, int b) {
 
m.sx=a; m.sy=b;//Creating matrix1...
for (int i=0; i<m.sy;i++)
for(int j=0;j<m.sx;j++) scanf("%d",&m.coef[i][j]);
}
 
void PrintMatrix(const Matrix &w)
{
for (int i=0;i<w.sy;i++)
    {
for (int j=0;j<w.sx;j++) printf("%d\t",w.coef[i][j]);
cout <<'\n';
     }
}
void SummMatrix( const Matrix &m1,
         const Matrix &m2,
         Matrix &sres) {
  sres.sx = m1.sx; sres.sy = m2.sy;
  cout<<"\nSummMatrix...\n";
  for (int i=0;i<m1.sy;i++)
    for (int j=0;j<m1.sx;j++) sres.coef[i][j]=m1.coef[i][j]+m2.coef[i][j];
}
 
void MultMatrix( const Matrix & m1,
         const Matrix & m2,
         Matrix & mres) {
  mres.sx=m1.sx; mres.sy = m2.sy;
  double M=0;
  cout <<"\nMultMatrix...\n";
  for (int i1=0;i1<m1.sx;i1++)
    for (int j1=0;j1<m2.sy;j1++)
    {
     for(int i2=0;i2<m2.sx;i2++)
     M+=(m1.coef[i1][i2]*m2.coef[i2][j1]);
     mres.coef[i1][j1]=M;
     //      M=0;
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru