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

Реализовать умножение матрицы на матрицу и матрицы на вектор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли перевести из Паскаля в СИ http://www.cyberforum.ru/cpp-beginners/thread885582.html
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. {task string36} var s,s1,s2:string; p:byte; begin write('Введите строку S='); readln(s); ...
C++ Определить количество строк файла, содержащих ровно одно слово и вывести строки, содержащих не более 5-ти символов создать с помощью средств С++текстовый файл. Определить количество строк файла, содержащих ровно одно слово и вывести строки, содержащих не более 5-ти символов. http://www.cyberforum.ru/cpp-beginners/thread885581.html
C++ VS 2010. Psapi.h. Ссылка не неразрешённый внешний элемент
Что не так? #include <windows.h> #include <iostream> #include <Psapi.h> using namespace std; int main() { DWORD a;
С++ Найти последовательность C++
помогите решить пожалуйста! Даны две целочисленные квадратные матрицы порядка 6. Найти последовательность из нулей и единиц b1, ..., b6 такую,что bi=1, когда количество отрицательных и...
C++ Максимальный Элемент, С++ http://www.cyberforum.ru/cpp-beginners/thread885566.html
Вот код: #include<conio.h> #include<dos.h> #include<graphics.h> #include<iostream.h> #include<stdlib.h> class ind { ind *next; int g,t,f,c,x,y;//t-vremya ost,i-vremya sozd,f-vremya rabotu
C++ Некорректный ввод русского текста Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с файла текст на русском языке. Я его спокойно могу вывести в консоль и все правильно и корректно отображается. Я... подробнее

Показать сообщение отдельно
MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
31.05.2013, 22:43
Умножение матрицы на вектор:
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main() {
  srand(time(0));                                         // Ustanavlivaem "zerno" dlya sluchainih chisel
  int **matrix, *vector, *res_vector, n, m;    
    std::cout << "n = ";
  std::cin >> n;                                          // n strok
  std::cout << "m = ";
  std::cin >> m;                                          // mm stolbcov
  matrix = new int*[n];                                   // Videlyaem pamyat pod stroki
  for(int i = 0; i < n; ++i)
    matrix[i] = new int[m];                               // Videlyam pamyat pod stolbci v kajdoi stroke
  
  vector = new int[m];                                    // Videlyem pamyat pod vector na kotorij budem umnojat
  
  std::cout << "Vector:" << std::endl;
  for(int i = 0; i < m; ++i) {
    vector[i] = 1 + rand() % 9;                            // zapolnyaem sluchainimi chislami vector i vivodim ego
    std::cout << std::setw(3) << vector[i];
  }   
  
  res_vector = new int[n];                                // Videlyaem pamyat pod vector kuda zapisivaem resultat umnojeniya
  
  std::cout << "\nMatrix:" << std::endl;
  for(int i = 0; i < n; ++i) {
    for(int j = 0; j < m; ++j) {
      matrix[i][j] = 1 + rand() % 9;                      // Zapolnili matricu
      std::cout << std::setw(3) << matrix[i][j];          // vivodim tut je
    }
    std::cout << std::endl;
  }
  std::cout << std::endl;
  
  for(int i = 0; i < n; ++i)                            // zapolnnyaem nulyami resultiruiwij vector t.k. ispolsuem summirovanie nije
    res_vector[i] = 0;
  std::cout << "Result: " << std::endl;
  for(int i = 0; i < n; ++i) {
    for(int j = 0; j < m; ++j)
      res_vector[i] += matrix[i][j] * vector[j];          // Umnojaem
    std::cout << res_vector[i] << ' ';                    // kak poluchili element vivodim ego
  }
  
  
  delete[] res_vector;                                    // Osvobojdaem is pod vsego pamyat
  delete[] vector;
  for(int i = 0; i < n; ++i)
    delete[] matrix[i];
  delete[] matrix;
}
Добавлено через 35 минут
Матрица на матрицу:
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 <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
int** createMatrix(int, int);
void showMatrix(int **, int, int);
void fillMatrix(int **, int, int);
void deleteMatrix(int **, int);
 
int main() {
  srand(time(0));
  int **A, **B, **C, n, m, p;
  std::cout << "Please enter size of matrix A(n x m)" << std::endl;
  std::cout << "n = ";
  std::cin >> n;
  std::cout << "m = ";
  std::cin >> m;
  std::cout << "p = ";
  std::cin >> p;
  A = createMatrix(n, m);
  B = createMatrix(m, p);
  C = createMatrix(n, p);
  fillMatrix(A, n, m);
  fillMatrix(B, m, p);
  
  std::cout << "A:" << std::endl;
  showMatrix(A, n, m);
  std::cout << "\nB:" << std::endl;
  showMatrix(B, m, p);
  
  for(int i = 0; i < n; ++i) {
    for(int j = 0; j < p; ++j) {
      C[i][j] = 0;
      for(int k = 0; k < m; ++k)
        C[i][j] += A[i][k] * B[k][j];
    }
  }
  std::cout << "\nC:" << std::endl;
  showMatrix(C, n, p);
  deleteMatrix(A, n);
  deleteMatrix(B, m);
  deleteMatrix(C, n);
  return 0;
}
 
 
int** createMatrix(int n, int m) {
  int **matr = new int*[n];
  for(int i = 0; i < n; ++i)
    matr[i] = new int[m];
  return matr;
}
 
void fillMatrix(int **matr, int n, int m) {
  for(int i = 0; i < n; ++i)
    for(int j = 0; j < m; ++j)
      matr[i][j] = 1 + rand() % 99;
}
 
void showMatrix(int **matr, int n, int m) {
  for(int i = 0; i < n; ++i) {
    for(int j = 0; j < m; ++j)
     std::cout << std::setw(8) << matr[i][j];
    std::cout << std::endl;
  }
}
 
void deleteMatrix(int **matr, int n) {
  for(int i = 0; i < n; ++i)
    delete[] matr[i];
  delete[] matr;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru