Найти наибольший элемент среди стоящих на главной и побочной диагоналях матрицы - C#
Формулировка задачи:
Дана действительная квадратная матрица порядка N(N-нечётное), все элементы которой различны. Найти найбольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом стоящим на пересичении этих диагоналей
Решение задачи: «Найти наибольший элемент среди стоящих на главной и побочной диагоналях матрицы»
textual
Листинг программы
using System; using System.Collections.Generic; namespace TestConsole { static class Task { delegate bool RealPredicate(double x); static double ReadNumber(string Caption, RealPredicate P = null) { double v = 0.0; bool flag = false; while (!flag) { Console.Write(Caption); flag = double.TryParse(Console.ReadLine(), out v); flag &= P != null && P(v); } return v; } static void Main() { // нечетный положительный размер матрицы int n = (int)ReadNumber("Размер матрицы: ", x => (int)x == x && x > 0 && x % 2 == 1); // Ввод элементов матрицы, все элементы должны быть различны double[,] d = new double[n, n]; HashSet<double> hs = new HashSet<double>(); for (int r = 0; r < n; r++ ) { for (int c = 0; c < n; c++) { d[r, c] = ReadNumber( string.Format("Элемент [{0}, {1}]: ", r, c), x => !hs.Contains(x)); hs.Add(d[r, c]); } } // Поиск максимума int rm = n / 2, cm = n / 2; for (int i = 0; i < n; i++ ) { if (d[i, i] > d[rm, cm]) { rm = i; cm = i; } if (d[i, n - i - 1] > d[rm, cm]) { rm = i; cm = n - i - 1; } } // Обмен d[rm, cm] = d[n / 2, n / 2] + 0 * (d[n / 2, n / 2] = d[rm, cm]); // Вывод for (int r = 0; r < n; r++) { for (int c = 0; c < n; c++) Console.Write("{0, 5} ", d[r, c]); Console.WriteLine(); } Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д