Переписать алгоритм для определения диагоналей матрицы с использованием foreach - C#

Узнай цену своей работы

Формулировка задачи:

Задание: Есть квадратная матрица m*n заполнить элементы над и под основной и побочными диагоналями звездочками, а слева и справа нулями, сами же диагонали заполнить суммой индексов элемента диагонали. Сделал реализацию через обычный цикл, но она не устраивает, необходимо с помощью foreach, не могу придумать алгоритм для определения диагоналей, помогите пожалуйста.
using System;
 
namespace test3
{
    class MainClass
    {
 
        public static void Main(string[] args)
        {
            int n;
            do
            {
                Console.Write("Введите n: ");
                int.TryParse(Console.ReadLine(), out n); 
            } while (n <= 0);

            string[,] array = new string[n, n];
 
            for (int i = 0; i < n; ++i)
            {
                for (int j = 0; j < n; ++j)
                {
                    if (i == j || j == n - i - 1)
                    { 
                        int x = (j + i);
                        array[j, i] = x.ToString();
                        Console.Write("{0,3}", array[j, i]);
                        
                    }
                    else if ((j > i && j < n - i - 1) || (j < i && j > n - i - 1))
                    {
                        array[j, i] = "*";
                        Console.Write("{0,3}", array[j, i]);
                    }
                    else
                    {
                        array[j, i] = "0";
                        Console.Write("{0,3}", array[j, i]);
                    }
                }
                Console.ReadLine();
                
            }
        }
    }
}

Решение задачи: «Переписать алгоритм для определения диагоналей матрицы с использованием foreach»

textual
Листинг программы
using System;
using System.Linq;
 
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args) {
            int n;
            do {
                Console.Write("Введите n: ");
                int.TryParse(Console.ReadLine(), out n);
            } while (n <= 0);
 
            string[,] array = new string[n, n];
 
            // Внимание - костыль! Не рекомендуется к использованию в реальной жизни!
            foreach (int i in Enumerable.Range(0, n)) {
                foreach (int j in Enumerable.Range(0, n)) {
                    if (i == j || j == n - i - 1) {
                        int x = (j + i);
                        array[j, i] = x.ToString();
                        Console.Write("{0,3}", array[j, i]);
 
                    }
                    else if ((j > i && j < n - i - 1) || (j < i && j > n - i - 1)) {
                        array[j, i] = "*";
                        Console.Write("{0,3}", array[j, i]);
                    }
                    else {
                        array[j, i] = "0";
                        Console.Write("{0,3}", array[j, i]);
                    }
                }
                Console.ReadLine();
 
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы