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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевести программу с языка Паскаль на С++ http://www.cyberforum.ru/cpp-beginners/thread360666.html
Требуется перевести программу задания С4 из ЕГЭ 2012 с языка Паскаль\Бейсик на язык С++. Задание представлено на странице 23 под пунктом С4, а подробное решение с кодом и описанием на странице 33.
C++ Удаление записи из массива структур. Здравствуйте! Прошу помочь мне с таким делом: необходимо удалить запись из массива структур. int main() { struct List{ // Объявление структуры int id; char name ; int kol; }; List Massiv; // Объявление массива структур for (int i=0;i<5;i++) // Заполнение массива структур http://www.cyberforum.ru/cpp-beginners/thread360665.html
C++ Написать программу вычисления выражения (см. вложение)
Задали написать программу а я не знаю как :cry: Вот пожалуйста условия: Написать программу вычисление на С++ Пожалуйста кто знает помогите... :wall:
C++ Помогите пжл построить классы для описания плоских фигур: круг, квадрат, прямоугольник в с++
необходимо построить классы для описания плоских фигур: круг, квадрат, прямоугольник. Включить методы для изменения объектов, переме-щения на плоскости, вращения. Перегрузить операции, реализующие те же действия. Выполнить тестирование класса, создав массив объектов.Все это написать для вижуала.
C++ Реализовать класс Bankomat моделирующий работу банкомата. http://www.cyberforum.ru/cpp-beginners/thread360655.html
Реализовать класс Bankomat моделирующий работу банкомата. В классе должны содержатся поля для хранения идентификационного номера банкомата, информации о текущей сумме денег оставшейся в банкомате минимальной и максимальной сумме которой позволяется снять клиенту в один день.Сумма денег представляется номиналами 10 -1000 руб.реализовать метод инициализации банкомата метод загрузки купюр в банкомат...
C++ Определить координаты точек пересечения высот Составить программу,которая по заданным координатам вершин треугольника(Xi,Yi,i=1,2,3) определяла бы координаты точек пересечения высот XH,YH, биссектрис XB,YB и медиан XM,YM. подробнее

Показать сообщение отдельно
alkagolik
Заблокирован
05.10.2011, 01:33     Умножение матрицы неизвестного размера
кто знает литературу почитать алгоритм Копперсмита - Винограда?
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
 
Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru