Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 7
1

Написать программу, реализующую умножение прямоугольных целочисленных матриц (ошибка)

22.12.2016, 22:06. Показов 1033. Ответов 3

Author24 — интернет-сервис помощи студентам
Пыталась написать программу, но выводит шлак.
Для квадратных матриц работает, как ни странно, для прямоугольных - нет.
Найдите ошибку и исправьте ее, пожалуйста.
Я всю голову уже сломала.
Код ниже, задание выше (в названии темы).
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
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
int irand(int a, int b) {
    return rand() % (b - a + 1) + a;
}
void ilol(int **lol, const int n, const int m) {
    int minrand = -5;
    int maxrand = 5;
    for (int j = 0; j<n; j++) {
        for (int i = 0; i < m; i++) {
            lol[j][i] = irand(minrand, maxrand);
        }
    }
}
void il(int **l, const int n, const int m) {
    int minrand = -5;
    int maxrand = 5;
    for (int i = 0; i<n; i++) {
        for (int g = 0; g < m; g++) {
            l[i][g] = irand(minrand, maxrand);
        }
    }
}
void outIlol(int **lol, const int n, const int m) {
    for (int j = 0; j<n; j++) {
        cout << endl;
        for (int i = 0; i<m; i++)
            cout << lol[j][i] << "    ";
    }
}
void outIl(int **l, const int n, const int m) {
    for (int i = 0; i<n; i++) {
        cout << endl;
        for (int g = 0; g<m; g++)
            cout << l[i][g] << "    ";
    }
}void matrix (int **lol, int **l, int **c, const int n, const int m, const int r){
    for (int j = 0; j < m; j++){
        for (int g = 0; g < r; g++){
            c[j][g] = 0;
            for (int i = 0; i < n; i++)
                c[j][g] += (lol[j][i] * l[i][g]);
 
        }
    }
}
int _tmain(int argc, _TCHAR* argv[])
{   int n, m, r;
    cin >> m >> n >> r;
    int **lol = new int *[m];
    for (int i = 0; i < m; i++) 
    lol[i] = new int[n];
    ilol(lol, m, n);
    outIlol(lol, m, n);
    cout << endl;
    int **l = new int *[n];
    for (int i = 0; i < n; i++)
    l[i] = new int[r];
    ilol(l, n, r);
    outIlol(l, n, r);
    cout << endl;
    int **c = new int *[r];
    for (int i = 0; i < m; i++)
    c[i] = new int[m];
    ilol(c, m, r);
    matrix(lol, l, c, n, m, r);
    outIlol(c, m, r);
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2016, 22:06
Ответы с готовыми решениями:

Написать программу, реализующую умножение прямоугольных целочисленных матриц
Написать программу, реализующую умножение прямоугольных целочисленных матриц. у меня ошибка,...

Умножение целочисленных прямоугольных матриц
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; ...

Умножение прямоугольных матриц
Смотрел на форуме, но у меня все равно не работает( Что не так? void Multiply() { int p,...

Реализовать умножение прямоугольных матриц
Здравствуйте. Только начал заниматься программированием. Начал с азов. но при написании ...

3
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 7
24.12.2016, 00:20  [ТС] 2
Хелп ми, плиз. Сдавать скоро.
0
65 / 65 / 47
Регистрация: 04.12.2016
Сообщений: 214
24.12.2016, 01:05 3
Мне было проще переписать. Надеюсь, разберётесь.

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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int irand(unsigned min, unsigned max) {
    return min + (rand() % (max - min + 1));    
}
 
int** randMatrix(unsigned n, unsigned m) {
    int** matrix = new int*[n];
    
    for(int i = 0; i < n; i++) {
        matrix[i] = new int[m];
        
        for(int j = 0; j < m; j++) {
            matrix[i][j] = irand(0, 10);
        }
    }
    
    return matrix;
}
 
int** multiplyMatrices(int** left, int** right, unsigned n1, unsigned m1, unsigned n2, unsigned m2) {
    if(m1 != n2) {
        cout << "Ошибка! Количество столбцов левой матрицы и количество строк правой матрицы должны быть равны.";
        return 0;
    }
    
    int** result = new int*[n1];
    
    for(unsigned i = 0; i < n1; i++) {
        result[i] = new int[m2];
        
        for(unsigned j = 0; j < m2; j++) {
            result[i][j] = 0;
            
            for(unsigned k = 0; k < m1; k++) {
                result[i][j] += left[i][k] * right[k][j];
            }
        }
    }
    
    return result;
}
 
void printMatrix(int** matrix, unsigned n, unsigned m) {
    for(unsigned i = 0; i < n; i++) {
        for(unsigned j = 0; j < m; j++) {
            cout << matrix[i][j] << " ";
        }
        
        cout << endl;
    }
}
 
int main() {
    int** a = randMatrix(3, 5);
    int** b = randMatrix(5, 4);
    
    printMatrix(a, 3, 5);
    cout << endl;
    printMatrix(b, 5, 4);
    cout << endl;
    int** c = multiplyMatrices(a, b, 3, 5, 5, 4);
    printMatrix(c, 3, 4);
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 7
26.12.2016, 23:14  [ТС] 4
Спасибо большое.
0
26.12.2016, 23:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2016, 23:14
Помогаю со студенческими работами здесь

Написать программу, которая выполняет умножение двух матриц
Написать программу, которая выполняет умножение двух матриц (матрицы не квадратные).

Написать функцию вычисления произведения прямоугольных матриц
Написать функцию вычисления произведения прямоугольной матрицы A размера k × m на...

Написать программу, реализующую умножение двух матриц
Уважаемые форумчане, горю на контрольной, времени совсем уже нет, сегодня сдаваться идти... Может...

Умножение прямоугольных матриц
добрый вечер. Подскажите пожалуйста как сделать умножение прямоугольных матриц, т.е не nXn , а mxn?...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru