Форум программистов, компьютерный форум 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> подробнее

Показать сообщение отдельно
Johny Deagle
1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 54
09.10.2015, 21:48     Перемножение двух матриц
Написать программу перемножения двух матриц. Использовать динамические массивы.

Вот код, но это при условии, что N у всех трех матриц одна и та же, с М такая же фигня. Но я не знаю как написать так, чтобы, например для 1 - ой матрицы N = 2 , M = 3, а для 2 матрицы N = 3, M = 2, тогда получается, что у 3 матрицы выйдет 3х3 размер. Вот как это я написать не знаю , подскажите или помогите с кодом.

C++ (Qt)
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, M; double *a, *b, *c;
    //ввод размеров матрицы
    cout << "N = "; cin >> N;
    cout << "M = "; cin >> M;
    //выделение памяти для матриц
    a = new double[N*M];
    b = new double[N*M];
    c = new double[N*M];
    //ввод матрицы А
    cout << "введите матрицу А" << endl;
    for (i = 0; i<N; i++)
        for (j = 0; j<M; j++)
        {
            cin >> *(a + i*M + j);
        }
    //ввод матрицы B
    cout << "введите матрицу B" << endl;
    for (i = 0; i<N; i++)
        for (j = 0; j<M; j++)
        {
            cin >> *(b + i*M + j);
        }
    //вычисление матрицы C=A+B
    for (i = 0; i<N; i++)
        for (j = 0; j<M; j++)
            *(c + i*M + j) = *(a + i*M + j) + *(b + i*M + j);
    //ввод матрицы С
    cout << "матрица С:" << endl;
    for (i = 0; i<N; cout << endl, i++)
        for (j = 0; j<M; j++)
            cout << *(c + i*M + j) << "\t";
    //освобождение памяти
    delete[]a;
    delete[]b;
    delete[]c;
    system("pause");
    return 0;
}

Кликните здесь для просмотра всего текста
Попытки сделать, но это бред

C++ (Qt)
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j,o,p,l,f ,N, M,C,L,K,E,ONE,TWO; double *a, *b, *c;
    //ввод размеров матрицы
    cout << "N = "; cin >> N;
    cout << "M = "; cin >> M;
    cout << "C = "; cin >> C;
    cout << "L = "; cin >> L;
    ONE = N;
    TWO = M;
    //выделение памяти для матриц
    a = new double[N*M];
    b = new double[C*L];
    
    //ввод матрицы А
    cout << "введите матрицу А" << endl;
    for (i = 0; i<N; i++)
        for (j = 0; j<M; j++)
        {
            cin >> *(a + i*M + j);
        }
    //ввод матрицы B
    cout << "введите матрицу B" << endl;
    for (o = 0; o<C; o++)
        for (p = 0; p<L; p++)
        {
            cin >> *(b + o*L + p);
        }
    //вычисление матрицы C=A+B
    if (ONE > TWO)
    {
        c = new double[ONE*ONE];
        for (l = 0; l < ONE; l++)
            for (f = 0; f < ONE; f++)
                *(c + i*ONE + f) = *(a + i*N + j) + *(b + o*C + p);
        cout << "матрица С:" << endl;
        for (l = 0; l<ONE; cout << endl, l++)
            for (f= 0; f<ONE; f++)
                cout << *(c + l* +f) << "\t";
    }
    else
    {
        c = new double[TWO*TWO];
        for (l = 0; l < TWO; l++)
            for (f = 0; f < TWO; f++)
                *(c + i*TWO + f) = *(a + i*N + j) + *(b + o*C + p);
        cout << "матрица С:" << endl;
        for (l = 0; l<TWO; cout << endl, l++)
            for (f = 0; f<TWO; f++)
                cout << *(c + l* +f) << "\t";
    }
    
    
    
    
        
    //освобождение памяти
    delete[]a;
    delete[]b;
    delete[]c;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru