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

Поменять местами максимальные элементы двух матриц

13.01.2019, 21:11. Показов 2273. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны матрицы A и В размерностью NxM, элементы которых вводятся с клавиатуры. Нужно найти максимальный элемент в каждой матрице и поменять эти элементы местами, а потом вывести обе матрицы. При этом перестановку требуется оформить в виде функции, с этим и проблема, прошу помощи. Вот частично мой, частично шаблонный набросок без перестановки.
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
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int** Create(int n, int m);           // создание матрицы n строк m столбцов
void Free(int** M, int n);             // освобождение матрицы
void Input(int** M, int n, int m); 
void WorkA(int** M, int n, int m);
void WorkB(int** M, int n, int m);
 
int main()
{
    setlocale(LC_ALL,"Rus");
    int n, m;
    cout << "Введите количество строк матриц: ";
    cin >> n;
    cout << "Введите количество столбцов матриц: ";
    cin >> m;
    int** A = Create(n, m);
    int** B = Create(n, m);
    Input(A, n, m);
    Input(B, n, m);
    WorkA(A, n, m);
    WorkB(B, n, m);
    Free(A, n);
    Free(B, n);
}   
//Описание функций
int** Create(int n, int m)
{
    int** M = new int*[n];
    for (int i = 0; i < n; i++)
    {
        M[i] = new int[m];
    }
    return M;
}
//----------------------------
void Free(int** M, int n)
{
    for (int i = 0; i < n; i++)
        delete[] M[i];
    delete[] M;
}
//----------------------------
void Input(int** M, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << "Элемент матрицы [" << i << "][" << j << "]= ";
            cin >> M[i][j];
        }
 
    }
}
//----------------------------
void WorkA(int** M, int n, int m)
{
    int maxA = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (M[i][j] > maxA)
            {
                maxA = M[i][j];
            }
        }
    }
    cout << " Максимальный элемент A - " << maxA << endl;
}
//----------------------------
void WorkB(int** M, int n, int m)
{
    int maxB = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (M[i][j] > maxB)
            {
                maxB = M[i][j];
            }
        }
    }
    cout << " Максимальный элемент B - " << maxB << endl;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
13.01.2019, 21:11
Ответы с готовыми решениями:

Поменять местами строки матриц, содержащие максимальные элементы
Ввести две матрицы действительных чисел 4х5. Поменять местами строки матриц, содержащие...

Поменять местами максимальные элементы заданных матриц. Как упростить программу?
Дали задачу, я её решил, и по-моему получилось как-то нерационально. Подскажите, как можно...

Описать функцию, меняющую местами максимальные элементы двух матриц произвольного порядка
После вывода на экран &quot;repl&quot; программа вылетает. Объясните, пожалуйста, почему? #include...

Определить максимальные элементы и поменять их местами в каждом из двух заданных массивов
1.Дано два массива действительных чисел. Определить максимальные элементы в каждом массиве и...

2
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
13.01.2019, 21:17 2
Создайте функцию, которая будет возвращать пару значений - i и j максимального элемента. Потом вызовите swap с соответствующими индексами
1
5 / 4 / 1
Регистрация: 29.08.2018
Сообщений: 12
13.01.2019, 21:34 3
Лучший ответ Сообщение было отмечено Fearkin как решение

Решение

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int** Create(int n, int m);           // создание матрицы n строк m столбцов
void Free(int** M, int n);             // освобождение матрицы
void Input(int** M, int n, int m);
int* WorkA(int** M, int n, int m);
int* WorkB(int** M, int n, int m);
void swap(int** A, int** B, int n, int m);
 
int main()
{
    setlocale(LC_ALL,"Rus");
    int n, m;
    cout << "Введите количество строк матриц: ";
    cin >> n;
    cout << "Введите количество столбцов матриц: ";
    cin >> m;
    int** A = Create(n, m);
    int** B = Create(n, m);
    Input(A, n, m);
    Input(B, n, m);
    swap(A, B, n, m);
    Free(A, n);
    Free(B, n);
}
//Описание функций
int** Create(int n, int m)
{
    int** M = new int*[n];
    for (int i = 0; i < n; i++)
    {
        M[i] = new int[m];
    }
    return M;
}
//----------------------------
void Free(int** M, int n)
{
    for (int i = 0; i < n; i++)
        delete[] M[i];
    delete[] M;
}
//----------------------------
void Input(int** M, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << "Элемент матрицы [" << i << "][" << j << "]= ";
            cin >> M[i][j];
        }
 
    }
}
//----------------------------
int* WorkA(int** M, int n, int m)
{
    int imax = 0, jmax = 0, maxA = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (M[i][j] > maxA)
            {
                maxA = M[i][j];
                imax = i;
                jmax = j;
            }
        }
    }
    return &M[imax][jmax];
}
//----------------------------
int* WorkB(int** M, int n, int m)
{
    int imax = 0, jmax = 0, maxB = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (M[i][j] > maxB)
            {
                maxB = M[i][j];
                imax = i;
                jmax = j;
            }
        }
    }
    return &M[imax][jmax];
}
//----------------------------
void swap(int** A, int** B, int n, int m)
{
    int temp = *WorkA(A, n, m);
    *WorkA(A, n, m) = *WorkB(B, n, m);
    *WorkB(B, n, m) = temp;
}
//----------------------------
1
13.01.2019, 21:34
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
13.01.2019, 21:34
Помогаю со студенческими работами здесь

Определить максимальные элементы в каждом из двух массивов вещественных чисел, и поменять их местами
Заданы два одномерных массива действительных чисел.Определить максимальные элементы в каждом...

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

Для двух матриц поменять местами элементы, расположенные на их побочных диагоналях
Для двух матриц поменять местами элементы, расположенные на их побочных диагоналях.

Массив: Описать функцию swap(A,B), меняющую местами максимальные элементы матриц А и В.
Надо исправить программу чтобы заработала. У самой уже ничего не получается=(( Описать функцию...

Поменять местами максимальные и минимальные элементы в массиве
Суть задачи сводится к генерации массива размером 7 на 10, его заполнения случайными числами. Далее...

Даны массивы A(5,5), B(5,5), C(5,5). Поменять местами максимальные и минимальные элементы.
на языке С++ Даны массивы A(5,5), B(5,5), C(5,5). Поменять местами максимальные и минимальные...


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

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