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

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

Восстановить пароль Регистрация
 
Duivel
3 / 3 / 0
Регистрация: 11.02.2013
Сообщений: 19
11.02.2013, 01:02     Найти суму двух квадратных матриц разного размера #1
Найти суму двух квадратных матриц разного размера.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 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;
}
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
11.02.2013, 04:10     Найти суму двух квадратных матриц разного размера #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
int mx1[FH][FL], mx2[SH][SL];
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 16:56     Найти суму двух квадратных матриц разного размера #4
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Не сработает. Память нужно выделять динамически. А также, матрицы должны быть квадратными.
Можешь откомпилировать и посмотреть, работает или нет. Это и есть самая что ни на есть квадратная матрица.
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
11.02.2013, 17:03     Найти суму двух квадратных матриц разного размера #5
Цитата Сообщение от Duivel Посмотреть сообщение
Найти суМму двух квадратных матриц разного размера.
В классической алгебре не определено. Имеешь право доопределить сам, но мы должны знать - как.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.02.2013, 17:07     Найти суму двух квадратных матриц разного размера #6
Цитата Сообщение от xtorne21st Посмотреть сообщение
Можешь откомпилировать и посмотреть, работает или нет.
это не есть правильно. даже если и компилируется.
как правильно заметил ув. nonedark2008, память нужно выделять динамически.
ну или, как минимум, заранее инициализировать матрицы с размером, к примеру, 100.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 18:15     Найти суму двух квадратных матриц разного размера
Еще ссылки по теме:

C++ Умножение квадратных матриц
C++ Найти сумму двух матриц
Вычисление степени матрицы, вычисления произведения двух матриц, вычисление суммы двух матриц C++

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 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;
}
Yandex
Объявления
11.02.2013, 18:15     Найти суму двух квадратных матриц разного размера
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru