Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных) - C#
Формулировка задачи:
Ребят, всем доброго времени суток, нужна ваша помощь) Имеется следующее задание:
1. Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных);
Методические указания: Второй параметр функции должен быть типа Array. Для того, чтобы отличить размерность массива (отличить вектор от матрицы) слудует использовать свойство Rank. К элементам массива A, имеющего класс Array, нет возможности прямого доступа в обычной манере - A [<индексы>], но зато есть специальные методы GetValue (<индексы>) и SetValue (<индексы>).
2. Дополнительно. Попробуйте модифицировать функцию, таким образом чтобы она могла печатать усеченные массивы. (10 баллов)
В принципе, решение уже есть, вот как оно у меня выглядит:
Суть моего вопроса о помощи заключается в следующем. Преподаватель сказал, что неверно выполнено дополнительное задание, т.е. если будет, к примеру, существовать какой-то изрезанный массив с вот такой вот инициализацией : int[][,][] C = new int[][,][]{......} т.е. какой-нибудь трехмерный и т.д., то такая функция для его печати работать не будет. Вроде как решить эту проблему как-то через рекурсию.. Только вот я не пойму как
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); } } }
Решение задачи: «Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных)»
textual
Листинг программы
printfn "Array 1 : \r\n%A"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д