Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.06.2024
Сообщений: 4

Дан массив длины n, n - четное. определить, совпадают ли первая и вторая половина массива

25.06.2024, 13:28. Показов 2442. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дан массив длины n, n - четное. определить, совпадают ли первая и вторая половина массива
Программа в С#
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2024, 13:28
Ответы с готовыми решениями:

Определить совпадают ли первая и вторая половина массива
Дан массив n, n - четное. Определить совпадают ли первая и вторая половина массива. Как сделать тут рандомный четный массив и задать...

Произвести сортировку данного числового массива так, чтобы первая половина массива была упорядочена по возрастанию, а вторая половина - по убыванию
Всем привет помогите с задачей Заранее Спасибо Произвести сортировку данного числового массива так, чтобы первая половина массива была...

Задан массив чисел G (K), где К - четное число. Определить является ли первая половина его элементов упорядоченной
Задан массив чисел G (K), где К - четное число. Определить является первая половина его элементов упорядоченной. Желательно не у Visual...

44
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
28.06.2024, 15:55
Студворк — интернет-сервис помощи студентам
бабушка Прасковья Михайловна, когда делала за внука дом. задание по C#, употребляла следующее выражение,
чтобы обезопаситься от возможных отрицательных значений индексной переменной i :

C#
1
A[-Math.Abs(i)]
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
28.06.2024, 16:00
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Он должен думать о том будет ли его код работать в будущих версиях языка?
Нет, конечно... но и почему он должен думать, что там было при царе Горохе? так ведь можно вообще скатиться до попыток совместимости приложений с DOS... ну, если немного поутрировать.
Если целевая версия не поддерживает отрицательную индексацию, то программист, а также компилятор должен понимать, что к чему и для чего. Нет? Иначе говоря: если нет поддержки обратной индексации с унарным минусом, то откуда ей там взяться с циркумфлексом? Какая там обратная совместимость?
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
28.06.2024, 16:01
Raku

Perl
1
2
my Int $index  where * ~~ 0 .. +Inf;
$index = -1
Type check failed in assignment to $index; expected <anon> but got Int (-1)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18344 / 14270 / 5370
Регистрация: 17.03.2014
Сообщений: 28,946
Записей в блоге: 1
28.06.2024, 16:23
YuS_2, я понял. Обратная совместимость для вас пустой звук.

Цитата Сообщение от volodin661 Посмотреть сообщение
my Int $index where * ~~ 0 .. +Inf;
Удобная возможность. Я помню такое еще со времен Pascal.
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
28.06.2024, 17:34
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Удобная возможность. Я помню такое еще со времен Pascal.
Ларри Уолл, когда в течение 15 лет конструировал Raku, потырил различные фичи приблизительно с 15 языков.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
28.06.2024, 19:21
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Обратная совместимость для вас пустой звук.
Ну, почему же? Обратная совместимость - штука полезная. Но если она существует в ущерб развитию нового, то ну её эту совместимость...
Если говорить не вообще, а о частном случае, то не вижу проблемы в совместимости индексации с унарным минусом. Гипотетическая ситуация:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
array[-i]
в предыдущих версиях языка, скорее всего осталась бы гипотетической в превалирующем числе случаев. Т.к. поддержки такой индексации ранее не существовало, то с большой долей вероятности, код с унарным минусом перед переменной, которая могла бы содержать отрицательные числа, вряд ли использовался бы с весомым обоснованием, то бишь наличие подобного кода стремится к нулю. А вот, написание нового кода, достаточно сильно усложнилось для тех, кто работал с другими ЯП... как-то так. Просто хотел сказать о том, что учет обратной совместимости, в данном конкретном случае, совсем малозначителен, в отличие от унификации способа обратной индексации, аналогично другим языками...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18344 / 14270 / 5370
Регистрация: 17.03.2014
Сообщений: 28,946
Записей в блоге: 1
01.07.2024, 12:58
YuS_2, в данном случае ущерба для развития нет. Оператор в наличии. То что он отличается от более распространенного минуса мелочь к которой легко привыкнуть.

Насчет гипотетичности моего примера согласен. Я ни разу не видел такого кода. Вообще аргумент про обратную совместимость это только мое предположение. Удалось найти заметки авторов языка. Они пишут про большое количество проблем с "-", включая разрешение перегрузок. Обратная совместимость не упоминается. Может они думали о ней, может нет.
Lots of problems with using "-", with overload resolution etc.
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
01.07.2024, 14:59
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Удалось найти заметки авторов языка. Они пишут про большое количество проблем с "-", включая разрешение перегрузок.
Спасибо, прочитал... но, да, никакой конкретики нет, просто упоминание о большом числе проблем... такое себе...
Если бы перечислили бы те проблемы, было бы проще понять.
А про выбор циркумфлекса...
Let's use "^" as a strawman. That takes away some of the ambiguity.
- звучит как:


Конечно, хотелось бы однообразия (ещё раз упомяну, что ведь на момент введения циркумфлекса, уже была в наличии реализация с унарным минусом в powershell (.NET), поэтому и выглядит он как велосипед с квадратными колесами).
Ну, да ладно, все равно, повлиять на это нет возможности, поэтому согласен:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
То что он отличается от более распространенного минуса мелочь к которой легко привыкнуть.
привычка - дело наживное...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
01.07.2024, 20:03
Цитата Сообщение от YuS_2 Посмотреть сообщение
Если бы перечислили бы те проблемы, было бы проще понять.
Возьмём пример отсюда пост #16:
C#
1
2
    IList array = Array.CreateInstance(typeof(int), new int[] { 10 }, new int[] { -5 });
    array[-5] = 1;
YuS_2, если принять ваше предложение array[^1] - это ведь гораздо более кошерно, чем array[-1], хоть и являются синонимами..., то как интерпретировать array[-5]? Это минус пятый элемент, или пятый с конца (то есть нулевой)?

Добавлено через 5 минут
Или пятый от Count?

Выражение array[^5] интерпретируется как array[array.Count - 5] и, в данном случае, будет выкинуто исключение поскольку указывает на пятый по индексу элемент, а самый старший - четвёртый.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
01.07.2024, 20:51
Цитата Сообщение от Элд Хасп Посмотреть сообщение
то как интерпретировать array[-5]? Это минус пятый элемент, или пятый с конца (то есть нулевой)?
Добавлено через 5 минут
Или пятый от Count?
Это пятый от конца элемент
Я лучше на примере покажу:
PowerShell
1
2
3
$arr = @(1,2,3,4,5)
$arr[-5]
#1
Название: 2024-7-1 22-38-41.png
Просмотров: 80

Размер: 18.4 Кб
То бишь, отрицательные индексы начинаются с 1, точно также как и индексы с циркумфлексом в C#
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18344 / 14270 / 5370
Регистрация: 17.03.2014
Сообщений: 28,946
Записей в блоге: 1
01.07.2024, 20:53
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Выражение array[^5] интерпретируется как array[array.Count - 5] и, в данном случае, будет выкинуто исключение поскольку указывает на пятый по индексу элемент, а самый старший - четвёртый.
Мне кажется что это признак того, что массивы с отрицательными индексами сознательно были оставлены за скобками. Для иллюстрации двусмысленности мой пример с -i лучше подходит.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
01.07.2024, 20:55
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Выражение array[^5] интерпретируется как array[array.Count - 5] и, в данном случае, будет выкинуто исключение поскольку указывает на пятый по индексу элемент, а самый старший - четвёртый.
А здесь не понял... откуда исключение-то?
array[^5] в массиве из пяти элементов, будет указывать на элемент с индексом 0... или о чем речь?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
01.07.2024, 22:12
Цитата Сообщение от YuS_2 Посмотреть сообщение
А здесь не понял... откуда исключение-то?
Посмотрите пример внимательнее.
В нём создаётся массив с количеством элементов Count=10 и индексами [-5...0....4].
А выражение array[^5] обращается к элементу [5]. Это выход за допустимые пределы индекса.

Добавлено через 1 минуту
Цитата Сообщение от YuS_2 Посмотреть сообщение
Это пятый от конца элемент
А как тогда обратить к элементу с индексом -5?
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
01.07.2024, 23:33
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В нём создаётся массив с количеством элементов Count=10 и индексами [-5...0....4].
Хмм, давайте смотреть...
CreateInstance(Type, Int32[], Int32[]) - Создает многомерный массив Array с указанным типом Type и длиной по измерениям и с заданными нижними границами.
тут речь идет о длине... а это:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А выражение array[^5] обращается к элементу [5].
обращение не к пятому элементу, а к пятому элементу от конца, т.е. счет в обратном порядке (начиная от 1)
Вы, хотите сказать, что с минусами в индексах, может возникнуть путаница или чойта?
В том смысле, что:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А как тогда обратить к элементу с индексом -5?
Опять же, хмм...
Индексируемая коллекция — это коллекция , в которой можно получить доступ к каждому элементу с помощью его индекса. Его индекс — это количество элементов перед ним в последовательности. Таким образом, ссылка на элемент по индексу 0 является первым элементом, индексом 1 является второй и т. д.
Существуют ли такие индексы в C#? Вот в чем вопрос...

Добавлено через 26 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
Существуют ли такие индексы в C#?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
индексами [-5...0....4].
А-а-а, вон чего... они таки существуют...
Тогда, аргумент железный.
Хоть и непонятно, для чего реализовали такую возможность подобной индексации, но тут конкретная коллизия с минусами и циркумфлекс - хороший компромисс.

Добавлено через 7 минут
но с такими массивами циркумфлекс не работает... мда, уж... надо читать документацию, метод тыка не очень хорош для восприятия...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
02.07.2024, 00:08
Цитата Сообщение от YuS_2 Посмотреть сообщение
Существуют ли такие индексы в C#? Вот в чем вопрос...
Вы сами себя запутали.
Индекс используется для получения/задания связанного значения в индексируемой коллекции.
Индекс, в общем случае, может быть любого типа. И, соответственно, нет обязательности непрерывности коллекции. Простейший пример - словарь.

Один из видов индексируемой коллекции - это списки IList и IList[T]. Количество элементов в списках возвращает свойство Count.

Одномерный Массив T[] в Шарпе - это один из видов списка. Количество элементов в массиве возвращает свойство Length или свойство Count явной реализации интерфейса IList. Массивы всегда начинают индексацию с нуля и имеют непрерывную индексацию от 0 до Length - 1.

Но, в общем случае, к спискам это не относится. Список может иметь любую индексацию, хотя в типовых реализациях правила индексации такие же как и в массивах.

Ваше предложение, с натяжкой, можно применить только к массивам T[], так как в них нет отрицательных элементов.

В моём пример показано создание ОДНОМЕРНОГО массива T[*]. Массивы такого типа имеют тоже непрерывную индексацию, но могут начинаться с любой позиции, в том числе с отрицательной. Массивы такого типа есть в .Net, но их нет в Шарпе. Поэтому для его использования в Шарпе надо "извернуться". В моём примере я его использую через приведение к списку IList.

Вот пример инициализации элементов массива:


Как при принятии вашего предложения, получить, например, значение элемента array[-2]=43?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
02.07.2024, 00:28
Цитата Сообщение от YuS_2 Посмотреть сообщение
обращение не к пятому элементу, а к пятому элементу от конца, т.е. счет в обратном порядке (начиная от 1)
Вы, похоже неправильно понимает значение выражения [^число]. В Шарпе это "синтаксический сахар" заменяющий такое выражение [Count - число].

То есть для списка длиной 10, выражение [^5] указывает всегда на элемент [5]. Но если индексация списка начинается не с нуля, то индекса 5 может не быть в списке. В моём примере, старший (верхний) индекс равен 4. Поэтому попытка доступа к элементу с индексом 5 выкинет исключение.

Добавлено через 9 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
А-а-а, вон чего... они таки существуют...
Угу. Уже сами поняли. Можно было сократить мой верхний пост.

Цитата Сообщение от YuS_2 Посмотреть сообщение
Хоть и непонятно, для чего реализовали такую возможность подобной индексации,
К сожалению "реализовали" только "обходными путями".
На мой взгляд наложение ограничения на индексы T[] излишне. Да, редко бывает нужно, чтобы они не начинались с нуля, но такое бывает нужно.
Скорее всего, такое правило введено, для упрощения проверок и переборов массивов. Но стоило ли ради этого накладывать доп ограничения.... Не уверен.
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
02.07.2024, 10:12
Code
1
2
3
4
A  = 1,2,2,1;
RA = A.Clone();
Array.Rreverse(RA);
Enumerable.SequenceEqual(A, RA);
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
02.07.2024, 10:27
volodin661, ???
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
02.07.2024, 10:53
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы, похоже неправильно понимает значение выражения [^число]. В Шарпе это "синтаксический сахар" заменяющий такое выражение [Count - число].
Ну, а если таки посчитать, что именно за число там указывается? (наличие индексации начинающейся не с 0, пока опустим)
array[array.Count - 0] - выход за границы массива array[^0] (исключение)
array[array.Count - 1] - первый элемент с конца массива array[^1]
array[array.Count - 2] - второй элемент с конца массива array[^2]
array[array.Count - 3] - третий элемент с конца массива array[^3]
и т.д.
Т.е., в общем случае, по сути, это полный аналог отрицательных индексов в других ЯП, a[-1], a[-2], a[-3].... Разве нет?
Всю картину "портит" наличие нестандартной индексации, но с такими массивами и циркумфлекс не работает, выкидывая исключение.
Да и в документации, есть упоминание:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
К сожалению "реализовали" только "обходными путями".
А это уже другой вопрос... если уж реализация возможна, то коллизия обязательно случится, поэтому и аргумент железный в сторону циркумфлекса.
Хоть и:
Not all languages support arrays with non-zero lower bounds, and therefore you may not be able to cast instances of non-zero based Array to the language's array type. For example, you cannot cast a 1-dimensional integer array with the lower bound 6 to C#'s int[] type. This results in InvalidCastException during runtime with the message "Unable to cast object of type 'System.Int32[*]' to type 'System.Int32[]'.", where the asterisk (*) means non-zero based index. However, you can cast zero based arrays of any rank created with CreateInstance(Type, Int32[], Int32[]) to the language's array. For example, you can cast a 2-dimensional zero based integer array created with this method to C#'s int[,] type.
но индексы с унарным минусом, уже вполне существовали, благодаря этому методу, т.е. именно поэтому и невозможно использовать унарный минус в индексах элементов, для ведения счета от конца массива.
0
2406 / 1938 / 763
Регистрация: 27.07.2012
Сообщений: 5,576
02.07.2024, 11:09
Цитата Сообщение от YuS_2 Посмотреть сообщение
Т.е., в общем случае, по сути, это полный аналог отрицательных индексов в других ЯП, a[-1], a[-2], a[-3].... Разве нет?
C
1
2
3
int a = 10;
int* pa = &a
pa[-10] = 100500; // всё ок (ну почти)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2024, 11:09

Заполнить массив Y таким образом, чтобы в нем сначала оказалась вторая половина исходного массива X, а затем первая
Помогите пожалуйста. Заполнить массив Y таким образом, чтобы в нем сначала оказалась вторая половина исходно-го массива X, а затем...

Заполнить массив Y таким образом, чтобы в нем сначала оказалась вторая половина исходного массива X, а затем первая
Заполнить массив Y таким образом, чтобы в нем сначала оказалась вторая половина исходно-го массива X, а затем первая. Ошибка в заполнении...

Построить массив В размером 2А, в первой половине которого вторая половина А, а в второй половине - первая половина А
Нужно просто из Статического Превратить в Динамический!!) Задание(Построить Масив В размеру 2А разместивши в первой половине В вторую...

Последовательное хранения двух стеков в массиве из N элементов с условием(первая половина - 1 стек, вторая половина - 2)
Доброго времени. Не могу понять как сделать часть задания с размещением 2 стеков в массиве и как нужно выводить стек, без полного удаления...

Определить, совпадают ли первая и вторая цифры четырёхзначного числа
Ввести четырёхзначное число. Определить, совпадают ли в нём первая и вторая цифры. Решить через условный оператор.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru