Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 12.05.2019
Сообщений: 29
1

Главные и побочные диагонали матрицы

16.06.2019, 00:45. Показов 4602. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток
Очень интересует вопрос операций над главными и побочными диагоналями, пока что я плохо в этом разбираюсь. Ну, например, задание: матрица 3х3, найти максимальный элемент во всей матрице и минимальный в побочной диагонали и поменять их местами.
Эта тема "для научного интереса", хочу понять, как работать с диагоналями в шарпе. Например, вот мой код. С поиском максимального значения элементов матрицы проблем нет, как менять элементы местами мне также известно. Но вот минимальный элемент побочной диагонали не ищет. Я буду очень благодарна любой вашей помощи. Скорее всего, есть другие методы работы с диагоналями и буду очень рада, если вы приведёте пример. Заранее большое спасибо
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
 static void Main(string[] args)
        {
            int[,] arr = new int[3, 3];
            int[] diagonal = new int[3];
             for (int i = 0; i < arr.GetLength(0); i++)
                 for (int j = 0; j < arr.GetLength(1); j++)
                 {
                     Console.WriteLine("Введите элементы массива");
                     arr[i, j] = Convert.ToInt32(Console.ReadLine());
                 }
            int maxelem = arr[0, 0];
            for (int i = 0; i < arr.GetLength(0); i++)
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    if (arr[i, j] > maxelem)
                        maxelem = arr[i, j];
                }
            Console.WriteLine(maxelem);
            Console.WriteLine("______________");
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                    Console.Write(String.Format("{0, 3}", arr[i, j]));
                Console.WriteLine();
            }
            int minelem = diagonal[0];
            diagonal[0] = arr[0, 2];
            diagonal[1] = arr[1, 1];
            diagonal[2] = arr[2, 0];
            for (int i = 0; i < diagonal.Length; i++)
                if (diagonal[i] < minelem)
                    minelem = diagonal[i];
            Console.WriteLine(minelem);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2019, 00:45
Ответы с готовыми решениями:

Поменять главные и побочные диагонали в матрице
Поменять главные и побочные диагонали в матрице, вот собственно мои задумки: program test; uses ...

Главная и побочные диагонали матрицы
Помогите, пожалуйста! Надеюсь последний раз создаю тему) Нужно вытащить главную и побочные...

Поменять местами главные диагонали матрицы
Доброго всем времени суток.Помогите написать программу. Дано n, a поменять местами главные...

Ввести квадратные матрицы X1N1×N1 , X2N2×N2 . Обменять главную и побочные диагонали у той матрицы
Ввести квадратные матрицы X1N1×N1 , X2N2×N2 . Обменять главную и побочные диагонали у той матрицы,...

4
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
16.06.2019, 01:00 2
Лучший ответ Сообщение было отмечено kira00 как решение

Решение

Не используйте "магических чисел", то есть в вашем случае это размер матрицы 3. Добавьте в начало
C#
1
const int N = 3;
А так же замените строки 26-32 на
C#
1
2
3
4
5
6
int minelem = 0;
for (int i = 0; i < N; i++)
{
    if (i == 0 || arr[N - 1 - i, i] < minelem)
        minelem = arr[N - 1 - i, i];
}
Добавлено через 5 минут
Так же обратите внимание на ваши 26 и 27 строки. Сначала вы записываете себе в переменную минимума значение diagonal[0], а только потом уже находите это значение diagonal[0]. Возможно поэтому у вас ошибка.
1
0 / 0 / 0
Регистрация: 12.05.2019
Сообщений: 29
16.06.2019, 13:17  [ТС] 3
Ох, да, Вы правы, нужно было просто местами поменять и уже после записывать минимум. Не стоит заниматься таким ночью..
Большое спасибо
По сути, побочная диагональ отвечает условию i + j = N - 1?
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
16.06.2019, 13:25 4
kira00, нет. Побочная диагональ это просто N-1 - это последний элемент и -i это мы вычитаем номер строки, тогда у нас на 0 строке будет 0 элемент, на первой строке 1 элемент с конца, то бишь побочная диагональ
0
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
16.06.2019, 13:59 5
Цитата Сообщение от kira00 Посмотреть сообщение
По сути, побочная диагональ отвечает условию i + j = N - 1?
Это уравнение, конечно, работает, но тут можно рассматривать проще, не выводя и не запоминая уравнений. Для номера строки мы просто с последнего элемента (N - 1) идем к первому (вычитаем счетчик i). То есть, к примеру, для столбца i = 2 у нас будет строка 3 - 1 - 2 = 0, то есть [0, 2].
0
16.06.2019, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2019, 13:59
Помогаю со студенческими работами здесь

Отсортировать главные диагонали матрицы по возрастанию методом вставки
Дана матрица размерностью nxn, содержащая целые числа. Отсортировать главные диагонали матрицы по...

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

двумерный массив- побочные диагонали
Привет всем. Пишу на Си. Как в матрице(двумерный массив mass) найти минимальный элемент, лежащий...

Главные диагонали в матрице
Доброго времени суток! Как можно вывести главные диагонали в квадратной матрице?? У меня получилось...


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

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