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

Заменить элементы побочной диагонали на минимальное значение матрицы

02.07.2014, 23:40. Показов 8398. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В матрице А[N,N], сформированной случайным образом, заменить элементы побочной диагонали на минимальное значение матрицы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.07.2014, 23:40
Ответы с готовыми решениями:

В матрице, сформированной случайным образом, заменить элементы побочной диагонали на минимальное
В матрице А, сформированной случайным образом, заменить элементы побочной диагонали на минимальное значение матрицы. #include...

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

Заменить элементы главной диагонали матрицы нулями и найти максимальный элемент ниже побочной диагонали
Есть пример для решения другой задачи(она находит суму всех элементов каждой строки и выводит результат суммы по возрастанию): #include...

9
 Аватар для NanoBreaker
23 / 23 / 10
Регистрация: 11.07.2013
Сообщений: 94
03.07.2014, 02:15
Лучший ответ Сообщение было отмечено blond_blond как решение

Решение

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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
 
    int MATRIX_SIZE = 0;
 
    cout << "Введите размер квадратной матрицы ( n x n ), n = "; cin >> MATRIX_SIZE;
 
    //объявление двумерного динамического массива
    int ** MATRIX = new int*[MATRIX_SIZE];
    for (int i = 0; i < MATRIX_SIZE; i++) MATRIX[i] = new int[MATRIX_SIZE];
 
    //заполняем матрицу случайными числами
    for (int i = 0; i < MATRIX_SIZE; i++){
        for (int j = 0; j < MATRIX_SIZE; j++){
            MATRIX[i][j] = rand() % 100;
        }
    }
 
    //выводим
    for (int i = 0; i < MATRIX_SIZE; i++){
        for (int j = 0; j < MATRIX_SIZE; j++){
            cout << setw(4) << MATRIX[i][j];
        }
        cout << endl;
    }
    cout << "--------------------------------" << endl;
 
    //находим наименьшее число в матрице
    int Min = 100; // 100 т.к. максимальное случайное число которое мы можем получить это 99
    for (int i = 0; i < MATRIX_SIZE; i++){
        for (int j = 0; j < MATRIX_SIZE; j++){
            if (MATRIX[i][j] <= Min) Min = MATRIX[i][j];
        }
    }
 
    //заменяем все элементы на побочной диагонали на Min
    for (int i = 0; i < MATRIX_SIZE; i++){
        for (int j = 0; j < MATRIX_SIZE; j++){
            if (j == MATRIX_SIZE - i - 1) MATRIX[i][j] = Min;
        }
    }
 
    //выводим
    for (int i = 0; i < MATRIX_SIZE; i++){
        for (int j = 0; j < MATRIX_SIZE; j++){
            cout << setw(4) << MATRIX[i][j];
        }
        cout << endl;
    }
    cout << endl;
 
    //высвобождение памяти отводимой под двумерный динамический массив
    for (int i = 0; i < MATRIX_SIZE; i++) delete[] MATRIX[i];
 
    system("PAUSE");
    return 0;
}
0
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
03.07.2014, 03:14  [ТС]
Добавлено через 15 минут
Это динамический массив?
а статический тогда как описать?
0
 Аватар для NanoBreaker
23 / 23 / 10
Регистрация: 11.07.2013
Сообщений: 94
04.07.2014, 00:59
Если делать со статическим массивом,то тогда размер матрицы ввести с клавиатуры не возможно. Придется в самой программе его задавать перед компиляцией, как некую переменную "int N = 10; int A[N][N] . . . "
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.07.2014, 01:14
Цитата Сообщение от NanoBreaker Посмотреть сообщение
тогда размер матрицы ввести с клавиатуры невозможно
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int N, min = 10;
    std::cout << "Введите число N для создания массива N x N: ";
    std::cin >> N;
    int a[N][N];
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            a[i][j] = rand() % 9 + 1;
            std::cout << a[i][j] << ' ';
            min = a[i][j] < min ? a[i][j] : min;
        }
        std::cout << std::endl;
    }
    std::cout << std::endl << "min = " << min << std::endl << std::endl;
    for (int i = 0; i < N; i++)
    {   
        for (int j = 0; j < N; j++)
        {
            if (j == (N - i - 1))
                a[i][j] = min;
            std::cout << a[i][j] << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}
Работает и не заикается даже. Сам всегда думал, что нельзя. Компилятор MinGW GCC 4.8.1
0
 Аватар для NanoBreaker
23 / 23 / 10
Регистрация: 11.07.2013
Сообщений: 94
04.07.2014, 01:16
Kerry_Jr, Круто буду знать, но вот мой Visual C++ меня начнёт обзывать плохими словами = D
0
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
04.07.2014, 01:37  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int N, min = 10;
    std::cout << "Введите число N для создания массива N x N: ";
    std::cin >> N;
    int a[N][N];
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            a[i][j] = rand() % 9 + 1;
            std::cout << a[i][j] << ' ';
            min = a[i][j] < min ? a[i][j] : min;
        }
        std::cout << std::endl;
    }
    std::cout << std::endl << "min = " << min << std::endl << std::endl;
    for (int i = 0; i < N; i++)
    {   
        for (int j = 0; j < N; j++)
        {
            if (j == (N - i - 1))
                a[i][j] = min;
            std::cout << a[i][j] << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}
Работает и не заикается даже. Сам всегда думал, что нельзя. Компилятор MinGW GCC 4.8.1
не работает в Visual C++
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.07.2014, 01:47
Лучший ответ Сообщение было отмечено blond_blond как решение

Решение

blond_blond, А так?
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    const int N = 15;
    int n, min = 10;
    std::cout << "Введите число N (не более 15) для создания массива N x N: ";
    do
        std::cin >> n;
    while (n > 15);
    int a[N][N];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 9 + 1;
            std::cout << a[i][j] << ' ';
            min = a[i][j] < min ? a[i][j] : min;
        }
        std::cout << std::endl;
    }
    std::cout << std::endl << "min = " << min << std::endl << std::endl;
    for (int i = 0; i < n; i++)
    {   
        for (int j = 0; j < n; j++)
        {
            if (j == (n - i - 1))
                a[i][j] = min;
            std::cout << a[i][j] << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}
0
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
04.07.2014, 02:46  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
blond_blond, А так?
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    const int N = 15;
    int n, min = 10;
    std::cout << "Введите число N (не более 15) для создания массива N x N: ";
    do
        std::cin >> n;
    while (n > 15);
    int a[N][N];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 9 + 1;
            std::cout << a[i][j] << ' ';
            min = a[i][j] < min ? a[i][j] : min;
        }
        std::cout << std::endl;
    }
    std::cout << std::endl << "min = " << min << std::endl << std::endl;
    for (int i = 0; i < n; i++)
    {   
        for (int j = 0; j < n; j++)
        {
            if (j == (n - i - 1))
                a[i][j] = min;
            std::cout << a[i][j] << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}
Да, все работает! Спасибо!!!
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
22.11.2016, 10:09
ЗАдание: Поменять местами значение диагоналей матрицы
Помогите не коректно меняет местами диагонали


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
102
103
104
#include "stdafx.h"
#include "conio.h"
#include "iostream"
 
using std::cout;
using std::cin;
using std::swap;
using std::endl;
 
int menu()
{
    int u;
    cout << "1.Ввод масива с клавиатуры" << endl << "2.Рандомные значения" << endl <<
        "3.Выход" << endl << ">";
    cin >> u;
    return u;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Замена диагоналей" << endl;
    int u = menu();
    int n, m;
start:
    cout << "Размер масива:" << endl << "х.max=";
    cin >> n;
    cout << endl << "y.max=";
    cin >> m;
    if (m != n)
    {
        cout << "Масив не имеет диагоналей";
        goto end;
    }
 
    int **mas = new int*[n];
    for (int i = 0; i < n; i++)
    {
        mas[i] = new int[m];
    }
    switch (u)
    {
    case 1:
        for (int vvod1 = 0; vvod1 < n; vvod1++)
        {
            for (int vvod2 = 0; vvod2 < m; vvod2++)
            {
                cout << "mas[" << vvod1 + 1 << "]" << "[" << vvod2 + 1 << "]=";
                cin >> mas[vvod1][vvod2];
            }
        }
        break;
    case 2:
        for (int vvod1 = 0; vvod1 < n; vvod1++)
        {
            for (int vvod2 = 0; vvod2 < m; vvod2++)
            {
                mas[vvod1][vvod2] = rand() % 101;
            }
 
        }
        break;
 
    default:
 
        goto end;
        break;
    }
    for (int print = 0; print < n; print++)
    {
        cout << endl;
        for (int print1 = 0; print1 < n; print1++)
        {
            cout << mas[print][print1] << '\t';
        }
    }
    cout << endl << "Новый масив" << endl;
    int m1 = m - 1, n1 = n - 1;
    for (int i = 0; m1 >= 0; i++)
    {
        swap(mas[i][i], mas[i][n1]);
        swap(mas[m1][i], mas[m1][n1]);
        m1 = m1 - 1;
        n1 = n1 - 1;
    }
    for (int print = 0; print < n; print++)
    {
        cout << endl;
        for (int print1 = 0; print1 < n; print1++)
        {
            cout << mas[print][print1] << '\t';
        }
    }
end:
    cout << endl << "Если хотите повторить операцию нажмите Y" << endl;
    char start;
    cin >> start;
    if (start == 'y')
    {
        goto start;
    }
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2016, 10:09
Помогаю со студенческими работами здесь

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

Заменить элементы, стоящие на побочной диагонали матрицы, на ее максимальный элемент
Дана матрица порядка 7х7. Замените элементы, стоящие на побочной диагонали, на максимальный элемент матрицы.

Заменить все нулевые элементы матрицы, которые стоят на побочной диагонали и выше нее, на 1
Дана квадратная матрица NxN. Заменить все 0 элементы на 1, которые стоят на побочной диагонали и выше нее.

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

Заменить элементы побочной диагонали матрицы на 100
Помогите с задачей на матрицу Дана матрица (3,4).Заменить элементы побочной диаганали на 100 вот фрагмент кода пытался придумать не...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru