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

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

Восстановить пароль Регистрация
 
blond_blond
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
02.07.2014, 23:40     Заменить элементы побочной диагонали на минимальное значение матрицы #1
В матрице А[N,N], сформированной случайным образом, заменить элементы побочной диагонали на минимальное значение матрицы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2014, 23:40     Заменить элементы побочной диагонали на минимальное значение матрицы
Посмотрите здесь:

C++ Заменить каждый нулевой элемент главной диагонали матрицы максимальным элементом побочной диагонали
C++ Расположить элементы матрицы так, чтобы на побочной диагонали были бы максимальные элементы строк
В матрице, сформированной случайным образом, заменить элементы побочной диагонали C++
В матрице, сформированной случайным образом, заменить элементы побочной диагонали на минимальное C++
C++ Вычислить среднее арифметическое побочной диагонали матрицы, и заменить им элементы ниже главной диагонали
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
03.07.2014, 02:15     Заменить элементы побочной диагонали на минимальное значение матрицы #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
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;
}
blond_blond
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
03.07.2014, 03:14  [ТС]     Заменить элементы побочной диагонали на минимальное значение матрицы #3
Добавлено через 15 минут
Это динамический массив?
а статический тогда как описать?
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
04.07.2014, 00:59     Заменить элементы побочной диагонали на минимальное значение матрицы #4
Если делать со статическим массивом,то тогда размер матрицы ввести с клавиатуры не возможно. Придется в самой программе его задавать перед компиляцией, как некую переменную "int N = 10; int A[N][N] . . . "
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
04.07.2014, 01:14     Заменить элементы побочной диагонали на минимальное значение матрицы #5
Цитата Сообщение от 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
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
04.07.2014, 01:16     Заменить элементы побочной диагонали на минимальное значение матрицы #6
Kerry_Jr, Круто буду знать, но вот мой Visual C++ меня начнёт обзывать плохими словами = D
blond_blond
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
04.07.2014, 01:37  [ТС]     Заменить элементы побочной диагонали на минимальное значение матрицы #7
Цитата Сообщение от 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++
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
04.07.2014, 01:47     Заменить элементы побочной диагонали на минимальное значение матрицы #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
blond_blond
1 / 1 / 0
Регистрация: 31.03.2014
Сообщений: 43
04.07.2014, 02:46  [ТС]     Заменить элементы побочной диагонали на минимальное значение матрицы #9
Цитата Сообщение от 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;
}
Да, все работает! Спасибо!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 10:09     Заменить элементы побочной диагонали на минимальное значение матрицы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
SerGo98
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
22.11.2016, 10:09     Заменить элементы побочной диагонали на минимальное значение матрицы #10
ЗАдание: Поменять местами значение диагоналей матрицы
Помогите не коректно меняет местами диагонали


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;
}
Yandex
Объявления
22.11.2016, 10:09     Заменить элементы побочной диагонали на минимальное значение матрицы
Ответ Создать тему
Опции темы

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