powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование массива
25 сообщений из 58, страница 1 из 3
Преобразование массива
    #39341658
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получил вот такое тестовое задание:

Реализуйте на С# функцию
System.Array SingleArrayToMultiDimensionalArray(System.Array src,
    int[] dimensions).

Функция преобразует одномерный массив src в многомерный массив с элементами того же типа и заданным числом измерений dimensions, где dimensions[i] – это размерность по i-му измерению. Старшее измерение индексируется приоритетнее.
Пример. Массив int[] Arr = new int[] { 1,2,3,4,5,6 }
преобразуется в многомерный массив int[2,3] (не object[2,3]):
1 2 3
4 5 6

Опишите прототип функции, выполняющей обратное преобразование.
Было бы интересно получить 2 решения – с использованием рекурсии и без – и сравнить их быстродействие.
Результат представить в виде консольного приложения, выводящего на экран многомерный массив.

Понятно, что особая пикантность этого задания в том , что на Питоне это одна строчка типа

numpy.arange(24).reshape((4,2,3))

ну да ладно, вправьте мозги мне, как на C# то это сделать, не зная заранее 2d,3d,4d... массив на выходе должен получиться?
...
Рейтинг: 0 / 0
Преобразование массива
    #39341663
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111с использованием рекурсии
это ещё с какого бодуна?

fil1111как на C# то это сделать, не зная заранее 2d,3d,4d... массив на выходе должен получиться
Метод
Код: c#
1.
Array.CreateInstance (Type,Int32[])
...
Рейтинг: 0 / 0
Преобразование массива
    #39341669
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

А по подробней можно?
Я все таки, наверное, не до такой степени хорошо знаю C#, как питон...

До работающего решения так и не дошёл.
...
Рейтинг: 0 / 0
Преобразование массива
    #39341678
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дошло. Спасибо!
...
Рейтинг: 0 / 0
Преобразование массива
    #39341687
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,

подробнее - в MSDN https://msdn.microsoft.com/ru-ru/library/dfs8044k(v=vs.110).aspx
там же Array.SetValue() https://msdn.microsoft.com/en-us/library/758awxk7(v=vs.110).aspx

поэлементное копирование от языка уже не зависит
...
Рейтинг: 0 / 0
Преобразование массива
    #39342342
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,
имхо, наверное эти парни хотели услышать классическое ( назовем его так) преобразование динамических массивов в стиле С,
без выделения новой памяти, а так это слишком уж просто и тупо.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342354
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

Ну так и давали бы задание на C.
Уж на чистом C без плюсов справился бы наверное :)
А Вы знаете как на C# это сделать без unsafe?
...
Рейтинг: 0 / 0
Преобразование массива
    #39342355
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,
дело в том, что если вы решили такую вещь верно, говорит для меня
1 вы знаете что такое куча
2 вы знаете как располагаются массивы тем более значимые
3 вы нативно представляете что такое многомерные массивы
и как они могут располагаться в куче.
4 Ссылки и указатели для вас не пустой звук.
Если парень все это знает, научить его программировать на шарпе, это элементарно.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342357
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111Где-то в степи,

А Вы знаете как на C# это сделать без unsafe?
знаю, но студией и шарпом не пользуюсь еже полтора года.
на си это примерно две строчки кода.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342359
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

Ну вот и я о том же. На Питоне так вообще одна. Да и учить меня уже поздно. Если только сам захочу научиться.
И все таки - как на шарпе то? Без unsafe.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342368
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,зачем вам шарп, работайте на питоне где вы все знаете,
зы подаю по пятницам..
...
Рейтинг: 0 / 0
Преобразование массива
    #39342373
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

Если Вы ВСЕ знаете, скорее всего уже умерли.
Я то как раз не стесняюсь признаться, что многого не знаю.
А вот Вы зачем вылезли непонятно. Товарищ выше сразу предложил правильное решение, которого я не знал. Вот ему большое спасибо. А вот о Вас чего думать?
...
Рейтинг: 0 / 0
Преобразование массива
    #39342380
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111что на Питоне это одна строчка типа

Зачем так глупо лукавить? Это с использованием NumPy одна строчка. Питон тут вообще не при чём. Много чего можно делать одной строчкой на любом языке, вплоть до запусков кораблей в стратосферу, с нужной библиотекой.

Хотя я бы с удовольствием посмотрел бы, как вы решите задачу на питоне одной строчкой без библиотек.

Код: c#
1.
2.
3.
var source = new int[2,3];

var target = source.Cast<int>().ToArray();



Уау ваще одной строчкай?! C# могуч!
...
Рейтинг: 0 / 0
Преобразование массива
    #39342383
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Ну задание то прочтите хотя бы :)
Я нисколько не сомневаюсь что могуч.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342385
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более того - хочу узнать насколько могуч!
Пока вижу только могучего Изопропил
...
Рейтинг: 0 / 0
Преобразование массива
    #39342390
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,

авторА вот Вы зачем вылезли непонятно. гыгыгы дядя вы дурак?
...
Рейтинг: 0 / 0
Преобразование массива
    #39342405
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111Ну задание то прочтите хотя бы :)

Да прочитал я, дебильное задание. Вот алгоритм:

1. Выясняем тип элементов в многомерном массиве.
2. Создаём одномерный массив-буффер динамически
3. Кастуем Buffer.BlockCopy

Всё это разумеется safe. Оформляем в функцию. И выполняем её одной строчкой.

Ибо если что-то нельзя выполнить одной строчкой, такой нед0-язык должен идти лесом, выкинуть его на свалку и затоптать ногами.
...
Рейтинг: 0 / 0
Преобразование массива
    #39342407
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111с использованием рекурсии

Какая ещё рекурсия, зачем?
...
Рейтинг: 0 / 0
Преобразование массива
    #39342417
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Да прочитал я, дебильное задание. Вот алгоритм:

1. Выясняем тип элементов в многомерном массиве.
2. Создаём одномерный массив-буффер динамически
3. Кастуем Buffer.BlockCopy

Всё это разумеется safe. Оформляем в функцию. И выполняем её одной строчкой.
Q

Брр.. Там наоборот же в задании. Из одномерного создать многомерный! Основная то проблема у меня и была - создать многомерный массив, не зная заранее его размерности. Вот Изопропил и подсказал нужную функцию.
Обратное преобразование - многомерного в одномерный сложностей не представляет...


hVosttИбо если что-то нельзя выполнить одной строчкой, такой нед0-язык должен идти лесом, выкинуть его на свалку и затоптать ногами.
Это да. Согласен!
...
Рейтинг: 0 / 0
Преобразование массива
    #39342429
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111,


fil1111Брр.. Там наоборот же в задании. Из одномерного создать многомерный! Основная то проблема у меня и была - создать многомерный массив, не зная заранее его размерности. Вот Изопропил и подсказал нужную функцию.
Обратное преобразование - многомерного в одномерный сложностей не представляет...

Как так?


fil1111Функция преобразует одномерный массив src в многомерный массив с элементами того же типа
fil1111Опишите прототип функции, выполняющей обратное преобразование.

Вот же. Обратное преобразование. Типа прямое это 1→М-мерный. Кривое какое-то задание. Где вообще такие глупости выдают?
...
Рейтинг: 0 / 0
Преобразование массива
    #39342436
fil1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Ну вот если внимательно прочесть, сделать то надо как раз преобразование 1-->M :)
...
Рейтинг: 0 / 0
Преобразование массива
    #39342440
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil1111hVostt,

Ну вот если внимательно прочесть, сделать то надо как раз преобразование 1-->M :)

Зеркальная реальность всё ж таки существует? Тогда забираю свои слова про питона, наверное он там и не в такие ленты мёбиуса сворачивается, некоторые задачи решаются в 0 строчек
...
Рейтинг: 0 / 0
Преобразование массива
    #39342659
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt3. Кастуем Buffer.BlockCopy
с этого места поподробнее
...
Рейтинг: 0 / 0
Преобразование массива
    #39342731
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
byte[,] bData = new byte[4, 3]
{ 
    {  1,  2,  3 }, 
    {  4,  5,  6 }, 
    {  7,  8,  9 }, 
    { 10, 11, 12 } 
};

byte[] baData = new byte[bData.Length];

Buffer.BlockCopy(bData, 0, baData, 0, bData.Length);
...
Рейтинг: 0 / 0
Преобразование массива
    #39342738
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

System.Array SingleArrayToMultiDimensionalArray(System.Array src, int[] dimensions)

внимательно смотрим тип аргумента и результата
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]