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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Среди чисел найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread265123.html
Помогите решить прогу плз. Условие: Дано натуральное число n. Среди чисел 1,2,...,n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел.(Определить процедуры, позволяющие распозновать полные квадраты). Заранее СПС!!!
C++ Ошибки в коде. Мне нужно было создать класс, который бы вставлял, удалял комплексные числа в массиве. Поиск элемента должен производиться двоичным поиском #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; struct CComplex { http://www.cyberforum.ru/cpp-beginners/thread265107.html
Преобразование арифметического выражения! C++
помогите пожалуйста с написание программы..задание такое: 1. Преобразовать арифметическое выражение, не содержащее скобок (и соответственно функциональных символов) в промежуточное представление. Например , A1+B1-X/15.5 . я к сожалению не знаю как это делать, а сдать нужно... заранее спасибо!
C++ Решите задачу вывода всех представлений числа в виде суммы, если слагаемые упорядочены по неубыванию, а порядок вывода самих слагаемых.
Решите задачу вывода всех представлений числа в виде суммы, если слагаемые упорядочены по неубыванию, а порядок вывода самих слагаемых.
C++ Операции с массивами http://www.cyberforum.ru/cpp-beginners/thread264797.html
Помогите пожалуйста с решение задачки с массивами 1 Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Распечатать полученный массив. Перевернуть массив и, если число элементов массива нечетное, удалить его средний элемент. Добавить в начало массива 3 элемента с значением M-2. Распечатать полученный массив. 2 В заданном двумерном массиве целых чисел поменять...
C++ Вычислить сумму ряда с точностью E Помогите составить програму, у меня вроде и все команды правельные но при компиляции на си выдаёт ошибку 1. Заранее благодарен. это при <stdio.h> и <math.h> Вычислить сумму ряда с точностью E. Определить количество слагаемых, необходимых для достижения заданной точности и вывести последнее слагаемое. S=1-1/lnx+1/ln3x-1/ln5x.... x=2,7; Е=10^-5 (Десять в минус пятой степени) подробнее

Показать сообщение отдельно
TrAgiD
Сообщений: n/a

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

27.03.2011, 21:45. Просмотров 20022. Ответов 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");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru