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

Перемножение двух квадратных целочисленных матриц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ допоможіть з динамічним масивом http://www.cyberforum.ru/cpp-beginners/thread265190.html
Дана матриця цілих чисел. Зібрати всі додатні елементи масиву вище головної діагоналі (заповнення здійснювати по рядках).
C++ По элементное сравнение масива vector #include <vector> #include <iostream> using namespace std; int main(int argc, char *argv) { int i, c, p=0 ,o=0; cout << "Vvedite razmer: "; http://www.cyberforum.ru/cpp-beginners/thread265189.html
Побитовые операции, работа с шестнадцатеричной записью C++
Добрый вечер. Цель лабы обработка числовой информации, работа с побитовыми операциями. Сама задача: Дано длинное целое неотрицательное число. Заменить каждую цифру F в шестнадцатеричной записи...
C++ допоможіть з динамічним масивом
Дана матриця цілих чисел. Зібрати всі додатні елементи масиву вище головної діагоналі (заповнення здійснювати по рядках).
C++ Шаблонные функции для нахождения минимального и максимального элемента пары чисел http://www.cyberforum.ru/cpp-beginners/thread265166.html
Описать функции-шаблоны для нахождения минимального и максимального элемента пары чисел. Задано два целых и два действительные числа. Используя функции-шаблоны найти максимальные и минимальные...
C++ Программа с файлами Нужно в файле все последовательности символов одинаковых длинне N заменить на запись (N символ) например: ===== 5=, ppppppp 7p. подробнее

Показать сообщение отдельно
TrAgiD
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 2

Перемножение двух квадратных целочисленных матриц - C++

27.03.2011, 21:45. Просмотров 20351. Ответов 3
Метки (Все метки)

Помогите написать прогу:
Написать подпрограмму
void mult(int a[], int b[], int c[], int N);

для перемножения двух квадратных целочисленных матриц (c = a × b) размером N × N (где N порядка 100) с помощью указателей и адресной арифметики.

Использовать в подпрограмме квадратные скобки [] запрещено!

Оптимизировать код программы путём «чистки циклов».

Память для каждой матрицы m[N][N] выделяется в едином блоке (т.е. для всей матрицы сразу, а не для каждого ряда по отдельности), в котором ряды матрицы прилегают друг к другу (т.е. первый элемент очередного ряда следует без промежутка за последним элементом предыдущего ряда), см. схему расположения ячеек многомерного массива в памяти:m[0][0] … m[0][N-1] m[1][0] … m[1][N-1] … … … m[N-1][0] … m[N-1][N-1]

заранее спасибо...

ПС. есть пример программы, которая перемножает массивы используя квадратные скобки...

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
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
const int M = 3, N = 8, MN = M * N;
 
void genereeri(int* m)
{
    for(int k = 0; k < MN; k++)
        m[k] = (rand() % 201) - 100; // -100 .. 100
}
 
void mult_classic(int a[M][N], int b[N][M], int c[M][M])
{
    for(int i = 0; i < M; i++) // i = ряд матрицы a
    {
        for(int j = 0; j < M; j++) // j = столбец матрицы b
        {
            int skalaar = 0;
            for(int k = 0; k < N; k++)
                skalaar += a[i][k] * b[k][j];
 
            c[i][j] = skalaar;
        }
    }
}
 
void print(int m[], int elemente, int veerge, string nimetus)
{
    cout << "\n*** " << nimetus << " ***";
    for(int i = 0; i < elemente; i++)
    {
        if(i % veerge == 0)
            cout << endl;
        cout << m[i] << '\t';
    }
    cout << endl;
}
 
int main()
{
    int x[M][N], y[N][M], z[M][M];
 
    srand(time(NULL)); // Randomize
    genereeri(&x[0][0]);
    genereeri(&y[0][0]);
 
    clock_t algus = clock();
    mult_classic(x, y, z);
    cout << float(clock() - algus) / CLOCKS_PER_SEC << " sekundit\n";
 
    print(&x[0][0], M * N, N, "x");
    print(&y[0][0], N * M, M, "y");
    print(&z[0][0], M * M, M, "z");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru