Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных) - C#

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

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

Ребят, всем доброго времени суток, нужна ваша помощь) Имеется следующее задание: 1. Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных); Методические указания: Второй параметр функции должен быть типа Array. Для того, чтобы отличить размерность массива (отличить вектор от матрицы) слудует использовать свойство Rank. К элементам массива A, имеющего класс Array, нет возможности прямого доступа в обычной манере - A [<индексы>], но зато есть специальные методы GetValue (<индексы>) и SetValue (<индексы>). 2. Дополнительно. Попробуйте модифицировать функцию, таким образом чтобы она могла печатать усеченные массивы. (10 баллов) В принципе, решение уже есть, вот как оно у меня выглядит:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ArrayTest
{
    class Program
    {
        class Arrs
        {
          
            public static void PrintAnyArr(string name, Array A)
            {
                Console.WriteLine(name);
                int n = A.Rank; 
                if (n == 1) 
                {
                    var en = A.GetEnumerator();
                    
                    en.MoveNext();
                    if (en.Current.GetType() == Type.GetType("System.Int32"))
                        for (int i = 0; i < A.GetLength(0); i++)
                            Console.Write(A.GetValue(i) + " ");
                    else
                        foreach (int[] mas in A)
                        {
                            for (int i = 0; i < mas.GetLength(0); i++)
                                Console.Write(mas.GetValue(i) + " ");
                            Console.WriteLine();
                        }
                }
                if (n == 2) //матрица
                {
                    for (int i = 0; i < A.GetLength(0); i++)
                    {
                        for (int j = 0; j < A.GetLength(1); j++)
                        {
                            Console.Write(A.GetValue(i, j) + " ");
                        }
                        Console.WriteLine();
                    }
                } 
 
            }

        }

        static void Main(string[] args)
        {
            
            int[] A = { 6, 2, 9 };
            int[,] B = { { 4, 2, 3 }, { 4, 8, 6 } };*/
           int[][] C = new int[3][]
            {
                new int[] {1,2,3},
                new int[] {4,5,6,7,8},
                new int[] {9}
            };
           
            Arrs.PrintAnyArr("Одномерный массив", A);
            Console.WriteLine(); 
            Arrs.PrintAnyArr("Матрица",B);
            Console.WriteLine();
            Arrs.PrintAnyArr("Усеченный массив",R);   
 
        }
    }
}
Суть моего вопроса о помощи заключается в следующем. Преподаватель сказал, что неверно выполнено дополнительное задание, т.е. если будет, к примеру, существовать какой-то изрезанный массив с вот такой вот инициализацией : int[][,][] C = new int[][,][]{......} т.е. какой-нибудь трехмерный и т.д., то такая функция для его печати работать не будет. Вроде как решить эту проблему как-то через рекурсию.. Только вот я не пойму как

Решение задачи: «Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных)»

textual
Листинг программы
printfn "Array 1 : \r\n%A"

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


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

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

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