Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Duivel
3 / 3 / 0
Регистрация: 11.02.2013
Сообщений: 19
1

Найти суму двух квадратных матриц разного размера

11.02.2013, 01:02. Просмотров 712. Ответов 6
Метки нет (Все метки)

Найти суму двух квадратных матриц разного размера.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 01:02
Ответы с готовыми решениями:

Из двух квадратных матриц создать третью, перемножив элементы первых двух согласно условию
Для двух квадратных матриц нужно создать третюю матрицу, элементы которой которой должны равняться...

Перемножение двух квадратных целочисленных матриц
Помогите написать прогу: Написать подпрограмму void mult(int a, int b, int c, int N); для...

Поменять местами элементы заданных секторов двух квадратных матриц
В двух квадратных матрицах выделено четыре сектора, ограниченных диагоналями: верхний, нижний,...

Найти в каждой из трёх квадратных матриц максимальный элемент главной диагонали
Помогите решить задачу: Даны три квадратные матрицы разных размеров. Найти в каждой из них...

Составить программу для нахождения произведения двух квадратных матриц произвольного размера
Надо сделать в консоли Составить программу для нахождения произведения двух квадратных матриц...

6
xtorne21st
интересующийся
306 / 277 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 04:06 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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
    // FirstLength, FirstHeight, SecondLength,
    // SecondHeight, NewLength, NewHeight
    int FL, FH, SL, SH, NL, NH; 
 
    std::cout << "1-st matrix:\n"
        "length: ";
    std::cin >> FL;
    std::cout << "height: ";
    std::cin >> FH;
 
    std::cout << "2-st matrix:\n"
        "length: ";
    std::cin >> SL;
    std::cout << "height: ";
    std::cin >> SH;
 
    // Генерируем матрицы
    int mx1[FH][FL], mx2[SH][SL];
    
    // Генерируем случайные значения, выводим результат
    srand(time(0));
    std::cout << "\nFirst matrix:\n";
    for (int y = 0; y < FH; ++y) // 1-st
        for (int x = 0; x < FL; ++x) {
            std::cout << (mx1[y][x] = rand() % 100);
            std::cout << ((x % FL == FL-1) ? '\n' : ' ');
        }
 
    std::cout << "\nSecond matrix:\n";
    for (int y = 0; y < SH; ++y) // 2-st
        for (int x = 0; x < SL; ++x) {
            std::cout << (mx2[y][x] = rand() % 100);
            std::cout << ((x % SL == SL-1) ? '\n' : ' ');
        }
 
    // Вычисляем размер новой матрицы
    NL = (FL >= SL) ? FL : SL;
    NH = (FH >= SH) ? FH : SH;
 
    int res[NH][NL];
 
    // Копируем и отображаем результат
    int temp_mx1, temp_mx2;
    std::cout << "\nResult:\n";
    for (int y = 0; y < NH; ++y) // new
        for (int x = 0; x < NL; ++x) {
           temp_mx1 = (y < FH && x < FL) ? mx1[y][x] : 0;
           temp_mx2 = (y < SH && x < SL) ? mx2[y][x] : 0;
           std::cout << (res[y][x] = temp_mx1 + temp_mx2);
           std::cout << ((x % NL == NL-1) ? '\n' : ' ');
        }
 
    return 0;
}
0
nonedark2008
1247 / 925 / 280
Регистрация: 28.07.2012
Сообщений: 2,562
11.02.2013, 04:10 3
Цитата Сообщение от xtorne21st Посмотреть сообщение
int mx1[FH][FL], mx2[SH][SL];
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
1
xtorne21st
интересующийся
306 / 277 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 16:56 4
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
Можешь откомпилировать и посмотреть, работает или нет. Это и есть самая что ни на есть квадратная матрица.
0
Байт
Эксперт C
20753 / 13225 / 2789
Регистрация: 24.12.2010
Сообщений: 27,841
11.02.2013, 17:03 5
Цитата Сообщение от Duivel Посмотреть сообщение
Найти суМму двух квадратных матриц разного размера.
В классической алгебре не определено. Имеешь право доопределить сам, но мы должны знать - как.
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5123 / 1561 / 951
Регистрация: 23.01.2011
Сообщений: 3,189
Завершенные тесты: 1
11.02.2013, 17:07 6
Цитата Сообщение от xtorne21st Посмотреть сообщение
Можешь откомпилировать и посмотреть, работает или нет.
это не есть правильно. даже если и компилируется.
как правильно заметил ув. nonedark2008, память нужно выделять динамически.
ну или, как минимум, заранее инициализировать матрицы с размером, к примеру, 100.
0
xtorne21st
интересующийся
306 / 277 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 18:15 7
Откомпилировал с ключём -Wall -pedantic. Действительно выдало предупреждение. Странно раньше этого не замечал.
Цитата Сообщение от Ev[G
eN;4120501]это не есть правильно
Можете объяснить, почему это не правильно, ведь результат работы вполне нормальный.

Добавлено через 6 минут
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
Прошу прощения, матрица действительно не квадаратная, век живи век учись, как говорится...

Добавлено через 26 минут
Принимая во внимания все наставления и рекомендации, а также на основании того, что при не соответствии диапазона одной из матриц, берётся значение наиболешей:
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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
    int FM, SM, NM; 
 
    std::cout << "1-st matrix:\n"
        "Size: ";
    std::cin >> FM;
    std::cout << "2-st matrix:\n"
        "Size: ";
    std::cin >> SM;
 
    // Генерируем матрицы
    int** mx1 = new int*[FM];
    for (int i = 0; i < FM; ++i)
        mx1[i] = new int[FM];
 
    int** mx2 = new int*[SM];
    for (int i = 0; i < SM; ++i)
        mx2[i] = new int[SM];
 
    // Генерируем случайные значения, выводим результат
    srand(time(0));
    std::cout << "\nFirst matrix:\n";
    for (int y = 0; y < FM; ++y) // 1-st
        for (int x = 0; x < FM; ++x) {
            std::cout << (mx1[y][x] = rand() % 100);
            std::cout << ((x % FM == FM-1) ? '\n' : ' ');
        }
 
    std::cout << "\nSecond matrix:\n";
    for (int y = 0; y < SM; ++y) // 2-st
        for (int x = 0; x < SM; ++x) {
            std::cout << (mx2[y][x] = rand() % 100);
            std::cout << ((x % SM == SM-1) ? '\n' : ' ');
        }
 
    // Вычисляем размер новой матрицы и выделям память
    NM = (FM >= SM) ? FM : SM;
    int** res = new int*[NM];
    for (int i = 0; i < NM; ++i)
        res[i] = new int[NM];
 
    // Копируем и отображаем результат
    int temp_mx1, temp_mx2;
    std::cout << "\nResult:\n";
    for (int y = 0; y < NM; ++y) // new
        for (int x = 0; x < NM; ++x) {
           temp_mx1 = (y < FM && x < FM) ? mx1[y][x] : 0;
           temp_mx2 = (y < SM && x < SM) ? mx2[y][x] : 0;
           std::cout << (res[y][x] = temp_mx1 + temp_mx2);
           std::cout << ((x % NM == NM-1) ? '\n' : ' ');
        }
 
    // Освобождаем память
    for (int i = 0; i < FM; ++i)
        delete [] mx1[i];
    delete [] mx1;
 
    for (int i = 0; i < SM; ++i)
        delete [] mx2[i];
    delete [] mx2;
 
    for (int i = 0; i < SM; ++i)
        delete [] res[i];
    delete [] res;
 
    return 0;
}
0
11.02.2013, 18:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 18:15

Найти произведение двух квадратных матриц A [5,5] и B [5,5]
Найти произведение двух квадратных матриц A и B :wall:

Найти произведение двух заданных квадратных матриц
здрасьте!!!! у меня тут есть задача с массивами....помогите кто-нибудь ее решить...... Найти...

Определить позиции минимальных элементов в заданных квадратных матрицах A и B разного размера
Добрый вечер, не могли бы вы, пожалуйста, помочь с заданием ? &quot;Определить позиции минимальных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru