С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 11.02.2013
Сообщений: 19
1

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

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

Author24 — интернет-сервис помощи студентам
Найти суму двух квадратных матриц разного размера.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2013, 01:02
Ответы с готовыми решениями:

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

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

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

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

6
интересующийся
311 / 282 / 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
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.02.2013, 04:10 3
Цитата Сообщение от xtorne21st Посмотреть сообщение
int mx1[FH][FL], mx2[SH][SL];
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
1
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 16:56 4
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
Можешь откомпилировать и посмотреть, работает или нет. Это и есть самая что ни на есть квадратная матрица.
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
11.02.2013, 17:03 5
Цитата Сообщение от Duivel Посмотреть сообщение
Найти суМму двух квадратных матриц разного размера.
В классической алгебре не определено. Имеешь право доопределить сам, но мы должны знать - как.
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
11.02.2013, 17:07 6
Цитата Сообщение от xtorne21st Посмотреть сообщение
Можешь откомпилировать и посмотреть, работает или нет.
это не есть правильно. даже если и компилируется.
как правильно заметил ув. nonedark2008, память нужно выделять динамически.
ну или, как минимум, заранее инициализировать матрицы с размером, к примеру, 100.
0
интересующийся
311 / 282 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2013, 18:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru