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

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

Восстановить пароль Регистрация
 
Xamil
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 22
04.10.2011, 23:00     Умножение матрицы неизвестного размера #1
задание такоэ нужно ввести размерность 2 матриц с клавиатуры а потом их перемножить... но проблема в том что не знаю как записать динамичный массив...
подскжите пожалуста...я толька знаю что нужно через указатели..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2011, 23:00     Умножение матрицы неизвестного размера
Посмотрите здесь:

C++ Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых C++
Массив заранее неизвестного размера C++
C++ Чтение файла неизвестного размера
C++ Как обьявить массив неизвестного размера?
C++ Задано 4 матрицы. Провести сложение, умножение, умножение на число
Ввод и вывод строки неизвестного размера C++
C++ Массив неизвестного размера

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
05.10.2011, 01:33     Умножение матрицы неизвестного размера #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
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 <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
void my_error(int n){
    printf("error");
    exit(n);
}
 
int **create_matrix(int N, int M){
    int i, j;
    int **matr;
 
    matr = (int **) malloc (N * sizeof(int*));
    if ( !matr) my_error(2);
 
    for(i = 0; i < N; ++i){
        matr[i] = (int *) malloc(M * sizeof(int));
        if ( !matr[i] ) my_error(3);
    }
 
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            matr[i][j] = rand() % 3;
    return matr;
}
 
void print_matr(int **matr, int N, int M){
    int i, j;
 
    for (i = 0; i < N; ++i){
        for (j = 0; j < M; ++j){
            if (matr[i][j] > 9)
                printf("%d ", matr[i][j]);
            else
                printf("%d  ", matr[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
void delete_matr(int **matr, int N, int M){
    int i, j;
 
    for (i = 0; i < N; ++i)
        free(matr[i]);
    free(matr);
}
 
int main(){
    int **array_a, **array_b, **array_c, N_a, M_a, N_b, M_b;
    int i, j, k, tmp = 1, tmp_Mb, sum = 0, iter_s, iter_c;
 
    printf("\nвведите количество строк и столбцов матрицы X\n");
    scanf("%d%d", &N_a, &M_a);
    printf("\nвведите количество строк и столбцов матрицы Y\n");
    scanf("%d%d", &N_b, &M_b);
    printf("\n\n");
 
    if ( M_a != N_b )
        my_error(1);
    else{
        array_a = create_matrix(N_a, M_a);
        array_b = create_matrix(N_b, M_b);
        printf("\nматрица X:\n\n");
        print_matr(array_a, N_a, M_a);
        printf("\nматрица Y:\n\n");
        print_matr(array_b, N_b, M_b);
 
        array_c = create_matrix(N_a, M_b);
 
        for (i = 0; i < N_a; ++i){
 
            tmp_Mb = M_b;
            iter_c = 0;
 
            while (tmp_Mb){
 
                tmp = 1;
                sum = 0;
                iter_s = 0;
 
                for (j = 0; j < N_b; ++j){
 
                    tmp *= (array_a[i][j] * array_b[iter_s++][iter_c]);
                    sum += tmp;
                    tmp = 1;
                }
 
                array_c[i][iter_c++] = sum;
                --tmp_Mb;
            }
        }
        print_matr(array_c, N_a, M_b);
 
        delete_matr(array_a, N_a, M_a);
        delete_matr(array_b, N_b, M_b);
        delete_matr(array_c, N_a, M_b);
    }
    return 0;
}
консоль

введите количество строк и столбцов матрицы X
20
25

введите количество строк и столбцов матрицы Y
25
15



матрица X:

1 1 0 1 2 1 1 0 0 1 2 1 2 1 2 1 0 0 1 1 2 2 0 0 2
2 2 1 1 1 2 0 0 0 2 0 1 1 1 1 0 0 0 2 2 1 2 2 2 0
2 1 1 2 2 0 2 2 1 1 0 0 2 0 2 2 1 0 1 2 0 0 0 0 2
0 2 2 0 2 1 0 0 2 2 0 0 2 2 1 0 0 2 0 1 1 1 0 0 2
0 1 2 1 2 0 2 2 0 0 1 2 1 2 2 1 0 2 1 2 1 0 0 1 0
2 0 2 0 1 0 1 2 0 0 2 1 2 2 2 1 0 2 2 0 2 0 0 1 2
1 0 0 2 2 1 2 0 1 2 2 1 2 2 1 2 1 1 2 1 0 1 2 2 0
0 2 1 0 1 1 2 2 1 2 2 0 1 2 1 2 1 0 1 2 2 0 0 0 0
2 1 1 1 2 2 2 1 1 1 0 0 0 0 2 0 2 0 0 2 2 2 1 2 1
0 2 2 2 1 0 2 0 2 1 0 0 1 2 2 2 0 2 0 1 2 1 1 2 1
0 1 1 0 1 2 0 2 1 0 0 2 2 1 0 2 2 0 0 2 0 0 2 2 0
1 2 2 0 2 0 1 1 2 1 0 1 2 2 1 0 0 1 0 2 1 2 2 2 0
1 2 0 0 0 1 0 0 1 0 2 2 1 1 0 0 2 2 0 2 0 0 1 0 1
1 2 1 0 2 1 1 2 2 2 0 2 2 0 1 0 1 1 2 2 1 0 2 1 0
2 2 1 0 2 1 1 2 2 2 2 2 0 2 2 0 0 1 0 1 2 1 2 2 0
2 0 1 1 1 2 1 1 1 2 1 2 1 1 2 0 0 1 1 1 2 2 1 0 0
0 1 1 0 0 0 0 0 1 2 0 1 1 2 0 0 1 0 2 0 2 0 0 2 2
1 1 1 0 2 2 1 0 0 2 1 1 2 0 0 1 0 2 0 0 2 2 1 2 2
1 2 2 0 1 1 2 2 0 0 2 2 2 0 1 2 2 2 1 2 0 0 0 2 1
0 2 1 2 1 0 1 1 2 2 0 2 1 0 2 2 0 0 1 0 2 0 0 2 2


матрица Y:

2 0 0 0 0 2 0 0 0 0 2 0 2 0 0
1 1 2 2 2 0 2 2 1 1 0 0 0 1 2
0 1 0 1 2 1 0 0 2 1 1 1 2 1 0
1 2 2 0 0 2 1 0 2 2 2 2 0 0 1
1 1 1 1 2 0 0 1 1 2 0 1 2 0 2
0 1 2 2 2 0 1 1 0 0 1 0 0 0 1
2 1 2 0 0 2 1 1 0 0 1 1 1 1 2
1 1 1 1 1 0 1 0 2 2 1 2 0 2 2
1 2 1 1 0 1 2 2 0 2 2 2 1 1 1
1 0 0 2 1 2 1 0 0 0 0 1 0 0 1
2 0 0 0 2 1 0 1 0 0 2 1 2 1 0
2 0 0 2 0 2 2 1 0 2 0 1 1 0 2
0 1 2 1 2 2 0 2 1 1 0 0 2 0 2
0 2 2 0 2 2 0 2 2 0 2 2 2 1 0
1 2 1 2 0 1 2 0 1 0 2 2 1 2 0
0 2 0 0 0 1 0 0 1 2 1 0 2 0 2
0 2 1 2 1 2 1 0 0 0 1 0 2 2 0
0 0 0 2 1 1 0 2 2 1 2 0 1 0 2
1 1 2 2 0 0 1 2 1 0 0 2 0 0 0
1 1 0 2 0 2 1 1 2 0 0 2 1 1 2
1 0 0 0 0 2 0 0 1 2 0 1 2 1 1
2 2 0 0 2 1 0 0 0 0 1 0 0 0 2
0 2 0 2 2 0 1 1 1 0 0 1 2 0 2
1 0 2 0 1 2 1 1 2 2 2 1 0 0 1
2 1 0 0 0 0 2 2 1 0 2 2 2 2 0

29 25 20 20 23 29 18 22 19 17 23 25 31 16 27
24 25 24 31 28 30 21 22 24 16 19 24 22 9 30
26 31 24 24 16 30 23 20 26 22 26 30 31 21 30
17 24 19 26 28 24 18 28 24 18 22 23 28 16 26
23 25 24 27 23 32 19 24 33 26 25 31 30 19 33
26 22 21 21 23 31 16 26 30 22 32 30 38 21 23
27 34 31 29 30 40 21 29 27 23 31 31 35 12 36
22 27 24 26 25 31 19 22 24 20 21 28 30 22 30
29 30 24 27 24 34 24 17 23 20 28 27 29 21 31
23 34 27 24 25 37 23 27 34 29 33 31 33 19 35
13 27 22 29 26 26 20 21 24 24 17 20 27 14 33
24 30 24 29 33 34 21 28 30 25 24 28 32 16 38
17 17 13 26 20 23 18 24 15 11 19 15 25 14 22
25 27 26 41 27 31 28 29 26 26 18 30 29 17 39
33 28 24 33 33 37 27 27 28 28 32 34 35 21 37
28 25 19 29 24 34 20 19 20 19 25 27 28 14 30
16 15 18 17 15 24 17 21 18 15 16 22 20 13 13
25 19 18 23 30 29 16 24 21 22 23 17 30 10 34
27 26 26 33 28 35 24 28 30 26 29 25 35 22 37
27 26 24 24 15 31 29 22 25 32 25 31 25 18 30
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.10.2011, 16:41     Умножение матрицы неизвестного размера #3
Читал, надо повспоминать, вот здесь посмотрите, например

http://mathinfinity.net.ru/article/31/
Yandex
Объявления
06.10.2011, 16:41     Умножение матрицы неизвестного размера
Ответ Создать тему
Опции темы

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