Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/148: Рейтинг темы: голосов - 148, средняя оценка - 4.78
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44

Индексация массивов с 1 (единицы)

18.09.2014, 20:50. Показов 28813. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C# - Индексация массивов с 1 (единицы).

Создаём static класс "a" с одним единственным методом.
Он возвращает значение на единицу меньше принимаемого значения.
Пример:
C#
1
2
3
4
5
6
7
static class a
{
    public static int s(int indexE)
    {
        return indexE - 1;
    }
}
Теперь можно обращаться к любым коллекциям используя нормальную, человеческую индексацию начинающуюся с единицы. Обращение к элементу массива выглядит так:
C#
1
array[a.s(1)]; // Обращаемся к первому элементу массива.
Пример:
C#
1
2
3
4
5
6
7
8
Random rnd = new Random();
int[] array = new int[10]; // Создаём массив из 10 элементов.
 
for (int i = 1; i <= array.Length; i++) // Заполняем массив случайными числами.
    array[a.s(i)] = rnd.Next(0, 100);
for (int i = 1; i <= array.Length; i++) // Выводим сгенерированные значения.
    Console.WriteLine("{0} ячейка = {1}", i, array[a.s(i)]);
Console.ReadLine();
P.S. Тема именно для тех, кому нужна индексация с единицы, а не для тех, кто хочет всему миру объяснить, что это плохо, позорно, извращение и так далее.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2014, 20:50
Ответы с готовыми решениями:

Индексация массивов
Всем доброго времени суток. Есть двумерный массив с индексацией от 0. Можно ли его переделать с индексацией от 1?

Индексация многомерных массивов
Почему в C/C++ массивы объявляются так: int array; Это связано как-то с процессом компиляции кода и другими особенностями языка...

Индексация массивов, арифметика указателей
инициализирую одномерный массив и делаю на него указатель const int N = 6; int X = {9,3,2,3,6,8}; int *mas = X; ...

51
 Аватар для Defazze
325 / 136 / 28
Регистрация: 18.09.2014
Сообщений: 167
19.09.2014, 13:05
Студворк — интернет-сервис помощи студентам
Очевидно, что "штатного" способа нет. Разве что Array.CreateInstance, но он не работает для одномерных массивов так, как хотелось бы.

Так же очевидно, что любые "нештатные" способы чреваты многочисленными граблями в дальнейшем использовании. А значит, таковые способы не могут считаться "хорошими".

Поэтому полагаю, что ответ на вопрос тредстарета - нет, в C# не существует хорошего способа сделать индексацию с 1 одномерных массивов.
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 13:45  [ТС]
Цитата Сообщение от Defazze Посмотреть сообщение
Так же очевидно, что любые "нештатные" способы чреваты многочисленными граблями в дальнейшем использовании. А значит, таковые способы не могут считаться "хорошими".
Возможно для кого-то это очевидно. Мне вот совсем не очевидно.
0
 Аватар для Cupko
660 / 597 / 171
Регистрация: 17.07.2012
Сообщений: 1,686
Записей в блоге: 1
19.09.2014, 14:01
Vasaka, поясните мне пожалуйста...
Цитата Сообщение от Vasaka Посмотреть сообщение
Тема именно для тех, кому нужна индексация с единицы
кто эти люди. Встречали ли вы таких? Кем работают, где учатся? Чем вообще занимаются? Мне просто интересно...
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 14:23  [ТС]
Цитата Сообщение от Cupko Посмотреть сообщение
кто эти люди. Встречали ли вы таких? Кем работают, где учатся? Чем вообще занимаются? Мне просто интересно...
Любой кто начинает изучать программирование, из тех кого я видел, когда узнают что считать нужно с нуля делают круглые глаза и спрашивают, а зачем? Это же неудобно.
Зайдите в любую школу где преподают программирование на тот урок, где это будут впервые детям сообщать и услышите то же самое.
Спросите любого прохожего на улице (не программиста), с какой цифры начинается счёт и вам ответят, что с 1 конечно. Хорошо если у виска ещё не покрутят.

Тем таких в сети достаточно много. Кто-то привыкает к индексации с нуля, а кто-то не может/ не хочет и ищет способы индексации с 1.

Если же вы хотите пообщаться с одним из таких, то пожалуйста, я к вашим услугам.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
19.09.2014, 14:53
Цитата Сообщение от Vasaka Посмотреть сообщение
Зайдите в любую школу где преподают программирование на тот урок, где это будут впервые детям сообщать и услышите то же самое.
если препод не может объяснить правильно то кто тому виной? почемуто никто из детей не делает круглые глаза глядя на линейку, а старательно чертит отрезки начиная от 0. если вас чему то неправильно научили самое верное быстро переучиться
Спросите любого прохожего на улице (не программиста), с какой цифры начинается счёт и вам ответят, что с 1 конечно.
а теперь спросите того что закончил хотябы 1-ый курс (не программиста) - какие координаты пересечения осей на декартовой плоскости. хотя это и в школе дают
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 15:04  [ТС]
pycture,
Господи, как на Matlab-то программируют вообще? Ума не приложу. Совсем математики оборзели. С единицы счёт ведут.

Успокойтесь уже. Считайте с 0, вам никто не запрещает.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.09.2014, 15:06
Цитата Сообщение от Vasaka Посмотреть сообщение
Господи, как на Matlab-то программируют вообще? Ума не приложу. Совсем математики оборзели. С единицы счёт ведут.
Ну и что?При чем здесь Matlab?
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 15:13  [ТС]
Цитата Сообщение от S_el Посмотреть сообщение
Ну и что?При чем здесь Matlab?
В MatLab нумерация элементов массивов начинается с единицы.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.09.2014, 15:20
Цитата Сообщение от Vasaka Посмотреть сообщение
В MatLab нумерация элементов массивов начинается с единицы.
Я это и без вас знаю.Но при чем здесь C#?
Хотите по обсуждать с чего правильнее вести индексацию создайте тему в другом разделе.
Здесь вам уже достаточно доступно изложили всё,что вам нужно знать об индексах в C#.
0
19.09.2014, 15:24

Не по теме:

Цитата Сообщение от Vasaka Посмотреть сообщение
Считайте с 0, вам никто не запрещает.
Vasaka милостливо разрешил всем в C# пользоваться индексами с 0. Благородно :D

0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 15:35  [ТС]
Цитата Сообщение от S_el Посмотреть сообщение
Я это и без вас знаю.Но при чем здесь C#?
Хотите по обсуждать с чего правильнее вести индексацию создайте тему в другом разделе.
Здесь вам уже достаточно доступно изложили всё,что вам нужно знать об индексах в C#.
Многоуважаемый S_el, вы первое сообщение читали?
Цитата Сообщение от Vasaka Посмотреть сообщение
P.S. Тема именно для тех, кому нужна индексация с единицы, а не для тех, кто хочет всему миру объяснить, что это плохо, позорно, извращение и так далее.
И дальше:
Цитата Сообщение от Vasaka Посмотреть сообщение
Таких тем с холиварами в сети пруд пруди. Давайте не будем создавать ещё одну. Эта тема не для выяснения как лучше и удобней, а для того как это сделать. Просто надо быть немного толерантней. Кому-то удобно считать с 1, кому-то с 0.
Цитата Сообщение от Vasaka Посмотреть сообщение
Но тема не для этого. У вас есть хороший способ сделать в C# индексацию с 1?
Цитата Сообщение от Vasaka Посмотреть сообщение
У вас есть хороший способ сделать в C# индексацию с 1? Нет? До свидания.
Тема не для холиваров.
Цитата Сообщение от Vasaka Посмотреть сообщение
Успокойтесь уже. Считайте с 0, вам никто не запрещает.
Надеюсь, я достаточно внятно объяснил, что эта тема не для обсуждения какая индексация хороша, а какая плоха, а исключительно для описания работающих методик индексации с 1 ИМЕННО в C#.

А теперь потрудитесь представиться. Вы представитель администрации? Вы модератор? Чтобы писать что мне делать?
Если да, то прошу принять меры к pycture, как основному генератору оффтопа и холивара.
Если нет, то давайте вы мне не будете говорить, что мне делать, а я не скажу вам, куда пойти?
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
19.09.2014, 15:38
ну что ж, удачи вам надеюсь, ваше творчество не придется никому поддерживать и править
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 16:03  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
ну что ж, удачи вам
Спасибо.
Цитата Сообщение от valera_21 Посмотреть сообщение
надеюсь, ваше творчество не придется никому поддерживать и править
Ну, это уже не мои проблемы.
0
19.09.2014, 16:05

Не по теме:

спасибо, занятно почитать. Кстати скажу свое "фе": если писать чисто свою функции и не юзать стороние, то можно применять индексацию хоть с кубического корня от девяти. А вот стороние методы расширения могут уже и не работать.

0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
19.09.2014, 16:10
Цитата Сообщение от Vasaka Посмотреть сообщение
Ну, это уже не мои проблемы.
икать будете ведь не переставая
0
 Аватар для Vasaka
6 / 6 / 0
Регистрация: 02.11.2012
Сообщений: 44
19.09.2014, 16:18  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
спасибо, занятно почитать. Кстати скажу свое "фе": если писать чисто свою функции и не юзать стороние, то можно применять индексацию хоть с кубического корня от девяти. А вот стороние методы расширения могут уже и не работать.
Я вот тоже так подумал. Но так как я сторонние не использую, то и проблемы нет.
Цитата Сообщение от valera_21 Посмотреть сообщение
икать будете ведь не переставая
Я так думаю, если кому-то написанный код не нравится (а код ему достанется абсолютно бесплатно), то он может написать этот код с нуля.
Есть бесплатная вещь, хочешь - бери. Не хочешь - сделай себе такую какая тебе нравится.
0
Заблокирован
19.09.2014, 16:40
1 + 0 = 0
(1 + 0) * x = 0 * x
x = 0
1 * 0 + 0 * 0 = 0 * 0
0 + 0 = 0
0 = 0
0 выиграл
1
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
19.09.2014, 17:03
Лучший ответ Сообщение было отмечено Vasaka как решение

Решение

Не по теме:

я тоже против индексации с нуля, но раз человек просит - давайте обсуждать способы решения поставленной задачи


мой вариант
C#
1
2
var index = 1;
var firstElement = arrayOrListOrWhatever[index - 1];
прошу заметить, что по количеству символов, даже с учетом пробелов, выходит короче, чем
C#
1
a.s(index)
Еще одним преимуществом является то, что данный метод можно использовать в комбинации с локальной переменной a. Ну и естественно, не нужно добавлять никаких классов. Кто предложит вариант лучше?


Добавлено через 1 минуту
Также, при использовании константных индексов моим способом, компилятор будет оптимизировать код
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.09.2014, 17:07
Цитата Сообщение от Vasaka Посмотреть сообщение
а исключительно для описания работающих методик индексации с 1 ИМЕННО в C#.
Можете делать так как считаете нужным,но переписывая всё под индексацию с 1,вы проделаете много бесполезной работы.
0
19.09.2014, 19:19
 Комментарий модератора 
Господа, прошу вернуться к изначальной теме.
За 39 сообщений уже можно понять, что такова задача.
Хочет считать с 1 - пусть считает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2014, 19:19

Индексация массивов с помощью указателей
Не смог понять логику вот этой программы, связанной с объявлением массивов через указатель: #include &lt;iostream&gt; ...

Очень сильно мешает индексация массивов с 0
Всем доброго времени суток, нужно решение проблемы индексации массивов с 0 в java с подобных языках. Например мне, после паскаля очень...

Индексация динамических массивов как она работает в С++?
Во всех книгах по крайней мере которые мне встречались массив например mass при инициализации i указывает количество строка а j...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Замена нулей на единицы и единицы на нули в матрицах с использованием функций
Всем доброго времени суток! Пишу программу в которой должна производиться замена нулей, в третьем столбце, на единицы в матрице а. А в...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru