Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 16

[C++] Задача на матрицу

15.11.2011, 13:14. Показов 1156. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задана матрица размеро n x m. Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечений k-ой строки и k-ого столбца.
 Комментарий модератора 
Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2011, 13:14
Ответы с готовыми решениями:

Задача на матрицу
Дана целочисленная матрица 4x7. Определить минимальное и максимальное значения матрицы и их местоположение. Найти среднее арифметическое...

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

Задача на матрицу
Дана матрица B(3,3). Получить из нее две матрицы, первая матрица получается путем возведения в куб исходной матрицы; вторая - возведением в...

1
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
15.11.2011, 14:12
Лучший ответ Сообщение было отмечено fierswolf как решение

Решение

Цитата Сообщение от fierswolf Посмотреть сообщение
Задана матрица размеро n x m. Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечений k-ой строки и k-ого столбца.
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
using namespace std;
 
int main() {
    const int n = 5;
    const int m = 5;
    int A[n][m];
    int k, max_index = (n > m) ? n : m;
 
    srand(time(NULL));
 
    // Заполнение матрицы случайными числами
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            A[i][j] = rand()%51 - 25;
            cout << A[i][j] << '\t';
        }
        cout << endl;
    }
 
    cout << "Enter k[0-"<< max_index-1 << "]: ";
    cin >> k;
    k = abs(k) % max_index; // Простой способ избежать выхода за границы массива
 
    int max_i = 0, max_j = 0;
 
    // Поиск максимального числа по модулю
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (abs(A[i][j]) > abs(A[max_i][max_j])) {
                max_i = i;
                max_j = j;
            }
        }
    }
    cout << "Max: A[" << max_i << "][" << max_j << "]=" << A[max_i][max_j] << "\nk=" << k << endl;
 
    // Перемещение столбцов и строк
    if (max_i < k || max_i > k) {
        for (int j = 0, temp; j < m; j++) {
            temp = A[k][j];
            A[k][j] = A[max_i][j];
            A[max_i][j] = temp;
        }
    }
 
    if (max_j < k || max_j > k) {
        for (int i = 0, temp; i < n; i++) {
            temp = A[i][k];
            A[i][k] = A[i][max_j];
            A[i][max_j] = temp;
        }
    }
    //---------------------------------
 
    // Вывод матрицы
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << A[i][j] << '\t';
        }
        cout << endl;
    }
 
    return 0;
}
Результат:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
-3  -19 -19 -23 -16 
14  -2  15  -20 -11 
10  15  -19 -17 -17 
-22 -7  24  2   12  
-13 8   -15 23  -9  
Enter k[0-4]: 3
Max: A[3][2]=24
k=3
-3  -19 -23 -19 -16 
14  -2  -20 15  -11 
10  15  -17 -19 -17 
-22 -7  2   24  12  
-13 8   23  -15 -9
Если нужно перемещать строки и столбцы итератисно, то блок Перемещение столбцов и строк можно заменить на следующий код:
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
         while (max_i != k) {
                if (max_i < k) {
                        for (int j = 0, temp; j < m; j++) {
                                temp = A[max_i+1][j];
                                A[max_i+1][j] = A[max_i][j];
                                A[max_i][j] = temp;
                        }
                        max_i++;
                }
                else {
                        for (int j = 0, temp; j < m; j++) {
                                temp = A[max_i-1][j];
                                A[max_i-1][j] = A[max_i][j];
                                A[max_i][j] = temp;
                        }
                        max_i--;
                }
        }
        
        while (max_j != k) {
                if (max_j < k) {
                        for (int i = 0, temp; i < n; i++) {
                                temp = A[i][max_j+1];
                                A[i][max_j+1] = A[i][max_j];
                                A[i][max_j] = temp;
                        }
                        max_j++;
                }
                else {
                        for (int i = 0, temp; i < n; i++) {
                                temp = A[i][max_j-1];
                                A[i][max_j-1] = A[i][max_j];
                                A[i][max_j] = temp;
                        }
                        max_j--;
                }
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2011, 14:12
Помогаю со студенческими работами здесь

Задача на матрицу
В положительной матрице имеется столбец, содержащий только единицы. Заменить элементы этого столбца суммой эле¬ментов всех оставшихся...

Задача на матрицу
Сформировать матрицу, элементами которой являются средние арифметические элементов исходной матрицы (без элемента, соответствующего...

Задача на матрицу C++
Здравствуйте, нужна помощь, не могу решить задачу &quot;Переписать первые элементы каждой строки матрицы A(5*8), большие числа C, в массив B....

Задача на Матрицу.
выяснить сколько полных элементов содержит квадратная матрица размерности n*n если Aij=cos(i^2+j)

Задача на матрицу
Помогите пжлст.. Задана матрица B(n,m). Определить количество строк, упорядоченных по возрастанию.Каждую вторую строку упорядочить по...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru