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

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

16.06.2019, 00:45. Показов 4744. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2019, 00:45
Ответы с готовыми решениями:

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

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

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

4
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
16.06.2019, 01:00
Лучший ответ Сообщение было отмечено 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  [ТС]
Ох, да, Вы правы, нужно было просто местами поменять и уже после записывать минимум. Не стоит заниматься таким ночью..
Большое спасибо
По сути, побочная диагональ отвечает условию i + j = N - 1?
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
16.06.2019, 13:25
kira00, нет. Побочная диагональ это просто N-1 - это последний элемент и -i это мы вычитаем номер строки, тогда у нас на 0 строке будет 0 элемент, на первой строке 1 элемент с конца, то бишь побочная диагональ
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
16.06.2019, 13:59
Цитата Сообщение от kira00 Посмотреть сообщение
По сути, побочная диагональ отвечает условию i + j = N - 1?
Это уравнение, конечно, работает, но тут можно рассматривать проще, не выводя и не запоминая уравнений. Для номера строки мы просто с последнего элемента (N - 1) идем к первому (вычитаем счетчик i). То есть, к примеру, для столбца i = 2 у нас будет строка 3 - 1 - 2 = 0, то есть [0, 2].
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2019, 13:59
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер