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

Перемножение двух матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Упорядоченный связный список объектов класса http://www.cyberforum.ru/cpp-beginners/thread1548588.html
Добрый вечер, вот уже третий день бьюсь в попытках создания связного списка из объектов класса. Задача: создать таблицу символов, в которой последние должны хранится в виде связного списка (в алфавитном порядке). Когда создаю обычный список все работает, подставляю класс и ожидаемого результата не получаю:( // IdentifierTable.cpp: определяет точку входа для консольного приложения. //...
C++ 6 процессов. Найти среднее время выполнения и среднее время ожидания Дана задача. Есть 6 процессов, продолжительностью (3 1 4 3 5 5) сек каждый. Каждый процесс имеет Т=2 сек, то есть, если 1-й процесс равен 3, то сначала выполнится 2 сек процесса, а потом, когда закончится выполнение 2 секунд каждого их 6 процессов, то начнется выполнение следующих 2 секунд. Нужно найти среднее время выполнения и среднее время ожидания. Среднее время выполнения - это сумма по... http://www.cyberforum.ru/cpp-beginners/thread1548568.html
Ввод переменной посреди строки C++
Есть строка "Enter: " Причем, после вывода этой строки каретка должна переместится в квадратные скобки, и ввод переменной должен быть внутри них. Можно SetConsoleCursorPosition, но при вводе большого числа затирается сам текст. Как реализовать? Можно ли вообще подобное?
Пишу итератор произвольного доступа C++
Пишу итератор произвольного доступа. По минимуму он должен поддерживать несколько операций, но меня смутила операция n+it, где n это целое число, а it это итератор. Для операции it+n всё понятно: там вызов преобразуется к it.operator+(n) А тут по логике должно быть наоборот, но int не класс, а примитивный тип, так что дружественную функцию не напишешь. О стандартных классовых обертках над...
C++ Конструкторы и деструкторы http://www.cyberforum.ru/cpp-beginners/thread1548556.html
Помогите, пожалуйста, исправить программу и закончить ее как надо. Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать: Для инициализации начальных значений использовать конструктор; Обязательно использовать деструктор для удаления объектов; Вывод на экран Display(); Для проверки программы использовать несколько случайных наборов...
C++ Мусор при записи значений в файл Дорого времени суток господа! Извиняюсь, если где-то уже была создана такая тема и я не поискал ее. При записи букафф в файл вылезая шляпа в виде мусора. Обычным циклом перебираю символы из одного массива и присваиваю другому и данные из другого массива записываю в файл. Вот такой кодесс #include <iostream> #include <fstream> #include <conio.h> #include <cstring> подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3000 / 1313 / 164
Регистрация: 20.02.2013
Сообщений: 3,739
Записей в блоге: 15
10.10.2015, 08:40     Перемножение двух матриц
Johny Deagle, такие вещи лучше делать с помощью функций. А ещё лучше - с помощью классов. Иначе будет простыня кода с многочисленным дублированием кода, а это плохой стиль программирования.

Добавлено через 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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <windows.h>
 
int ** create_matrix(int row, int col)
{
    int ** matrix = new int * [row];
    for (int i = 0; i < row; ++i)
        matrix[i] = new int[col];
 
    return matrix;
}
 
void delete_matrix(int ** matrix, int row)
{
    for (int i = 0; i < row; ++i)
        delete [] matrix[i];
    delete [] matrix;
}
 
void fill_matrix_rand(int ** matrix, int row, int col)
{
    Sleep(800);
    srand(time(0));
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
            matrix[i][j] = 10 + rand()%89;
}
 
int ** multiply_matrices(int ** matrix1, int ** matrix2, int row, int col)
{
    int ** result = create_matrix(row, col);
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
            result[i][j] = matrix1[i][j] * matrix2[i][j];
    return result;
}
 
void show_matrix(int ** matrix, int row, int col)
{
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < col; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << "\n";
    }
    std::cout << "\n";
}
 
int main()
{
    int row;
    std::cout << "Please enter the number of the rows: ";
    std::cin >> row;
 
    int col;
    std::cout << "Please enter the number of the columns: ";
    std::cin >> col;
 
    int ** matrix1 = create_matrix(row, col);
    fill_matrix_rand(matrix1, row, col);
    show_matrix(matrix1, row, col);
    
    int ** matrix2 = create_matrix(row, col);
    fill_matrix_rand(matrix2, row, col);
    show_matrix(matrix2, row, col);
 
    int ** result_matrix = multiply_matrices(matrix1, matrix2, row, col);
    show_matrix(result_matrix, row, col);
 
    delete_matrix(matrix1, row);
    delete_matrix(matrix2, row);
    delete_matrix(result_matrix, row);
 
    return 0;
}
Правда, размер у всех матриц одинаковый. Если надо разный, то надо будет маленько код переделать, а мне лениво.
 
Текущее время: 10:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru