XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Результаты опроса: С какой ячейки начинаете использование массива?
0 45 75.00%
1 или больше 15 25.00%
Голосовавшие: 60. Вы еще не голосовали в этом опросе

Ответ
 
H
hello world
offline
Опыт: 130,725
Активность:
[холивар] Массив считаем с нуля или с еденицы? )
Плюсы "метода с еденицы"
  • Считать удобнее
  • "Нулевая" переменная часто бывает полезной, даже если не задумывалось её использовать.
Плюсы "метода с нуля"
  • Экономим 1 ячейку памяти на выполнение ( в наше время практически не будет полезно даже с с кучей массивов и циклов внутри )
  • Тешим ЧСВ и считаем себя скилловым программистом =)
Какой вариант вы используете при создании массивов?

Отредактировано ScorpioT1000, 30.10.2010 в 21:54.
Старый 27.10.2010, 23:52
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
С нуля, потому что это удобно считать :D
Старый 27.10.2010, 23:54
reALien

offline
Опыт: 29,211
Активность:
С нуля, т.к. при единице пропадает одна ячейка и вообще говнокодинг это =D
Старый 27.10.2010, 23:55
H
hello world
offline
Опыт: 130,725
Активность:
Мне наоборот кажется что удобнее считать с единицы.
Ahelhot добавил:
говнокодинг это
Для себя нет. Другое дело если с твоим кодом работает кто то еще )
Старый 27.10.2010, 23:56
ScorpioT1000
Работаем
offline
Опыт: отключен
если считать с единицы, то будут постоянные несоответствия и оверрайды
Старый 28.10.2010, 01:06
H
hello world
offline
Опыт: 130,725
Активность:
счиго бы это?
Ноль обрабатывается нормально, просто не используется.
Массив в 10 чисел от 1 до 10. ( с еденицы )
Массив в 10 числе от 0 до 9 ( с нуля =О )
var[0] = null / false / 0 / что угодно еще.
var[1] = true
var[2] = false
var[3] = false
...
Старый 28.10.2010, 01:15
Skino

offline
Опыт: 4,683
Активность:
Считаю с еденицы, т.к. в 0 храню либо количество ячеек, либо дефолтную инфу потипа "none"
Старый 28.10.2010, 01:23
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Ahelhot, тебе тонко намекают, что с массивом у которого первый рабочий индекс - единица неудобно работать. Для управляющих переменных создаются свои переменные, а не выделяется нулевой элемент массива, т.к. из имени переменной должно быть понятно для чего она нужна, в редких случаях требуется комментарий. Из var[0] непонятно что она делает, комментарий обязателен. И не надо говорить, что ты делаешь для себя, ты знаешь для чего это и т.п. Забудь про код на пол года, а потом попробуй разобраться без комментариев с этими var1[0], var4[0] и т.п.
Старый 28.10.2010, 01:26
ScorpioT1000
Работаем
offline
Опыт: отключен
ну сравни:
#include <cstring>
#include <cstdlib>
using namespace std;

enum { MY_ARRAY_SIZE = 0xFF };
с единицы:
int main()
{
    int * arr = new int[MY_ARRAY_SIZE];
    for(int i=1; i < (MY_ARRAY_SIZE-1); ++i) { //лишние скобки, лишняя операция вычитания
        arr[i] = rand()%20;
    }
    return 0;
}
лишняя операция будет выполняться КАЖДЫЙ РАЗ, чтобы этого избежать придется либо объявлять еще одну глобалку, которая меньше на 1 оригинального сайза, либо локалку, дабы избежать создания её в стеке каждый раз
а если начинать отсчет с нуля:
int main()
{
    int * arr = new int[MY_ARRAY_SIZE];
    for(int i=0; i < MY_ARRAY_SIZE; ++i) { //всё банально
        arr[i] = rand()%20;
    }
    return 0;
}
Старый 28.10.2010, 01:38
H
hello world
offline
Опыт: 130,725
Активность:
var lol[30] // на самом деле массив из 31 элемента

lol[0] = "nothing"

for(j=1,j<=30,j++){
create_item[j,true,false); // какая то функция
lol[j] = last_item;
}
Как видишь все просто, никаких "минус адын" нет, и никаких лишних вычислений. Не понимаю в твоем примере (про еденицу) зачем ты заставляешь код таки считать с 0 =\ ( т.е i-1)
p.s синтакс приблизительный взят с кучи разных языков =) то ли js , то ли galaxy то ли еще хз что.
Старый 28.10.2010, 02:15
ScorpioT1000
Работаем
offline
Опыт: отключен
var lol[30] на самом деле массив из 31 элемента
тут написано из тридцати, кроме того, голые цифры пишут только быдлокодеры или в "наколенных программах", все константы всегда хранятся отдельно от реализации
Старый 28.10.2010, 02:27
Toadcop

offline
Опыт: 54,313
Активность:
лично я пользуюсь банальной логикой. + это никакой не спор. у каждого есть своя цель.

с 0ля это логичный (рацыональный) способ использования памяти.
с 1ы (учитывая что 0 существует) можно начинать хранить данные которые требуют большой степени "надежности" ибо 0 = "ошибка" некоректность в некоторых случиях и тем самым пологатся на такое число нельзя.

в целом всё =) я лично делаю что требует большей стабильности с 1. а обычно всё с 0ля. актуальный пример. это выделить хендл для объекта (даже не джасс т.е. любой объект) если следовать логики 0 это начяло то я буду выделять объект с ид 0 О_о что есть по многим причинам некоректно. и т.д.
Старый 28.10.2010, 04:05
ScorpioT1000
Работаем
offline
Опыт: отключен
есть некоторые вещи, когда типа индекс равен нулю и логично считать его ошибкой, как в индексах структур на vJass, это да :) но в целом, если нет причин, то не стоит это "заучивать" и юзать норм отсчет с нуля
Старый 28.10.2010, 14:56
H
hello world
offline
Опыт: 130,725
Активность:
тут написано из тридцати, кроме того, голые цифры пишут только быдлокодеры или в "наколенных > программах",
в galaxy 31. 0 тоже считается.
Константы я юзаю в структурах ) здесь не было смысла, ибо я только хотел донести смысл кода.
((цитата
есть некоторые вещи, когда типа индекс равен нулю и логично считать его ошибкой, как в индексах структур на vJass, это да :) но в целом, если нет причин, то не стоит это "заучивать" и юзать норм отсчет с нуля
))
Так ты согласен что нужно писать с единицы в некоторых ситуациях? )
Старый 28.10.2010, 15:19
ZiDI
0-Hedgehog =0
offline
Опыт: 1,726
Активность:
Хоть я и не джассер, да и вообще не программист, Я делаю с нуля, как в школе учили =)
Старый 28.10.2010, 16:04
lentinant
Скучно
offline
Опыт: 42,216
Активность:
Ahelhot:
var lol[30] на самом деле массив из 31 элемента
только не в С++
Старый 28.10.2010, 16:08
RazArt

offline
Опыт: 11,197
Активность:
0
Старый 28.10.2010, 16:10
ScorpioT1000
Работаем
offline
Опыт: отключен
при объявлении в скобках указывается явный размер массива, чето вы гоните. другое дело при доступе
Старый 28.10.2010, 16:47
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
при объявлении в скобках указывается явный размер массива, чето вы гоните. другое дело при доступе
(а там -1)
Старый 28.10.2010, 17:47
jeD_wc3
Изучаю C++
offline
Опыт: 4,038
Активность:
С нуля, так, как препод заставляет считать с нуля =)
lentinant:
var lol[30] на самом деле массив из 31 элемента
только не в С++
wtf? o_O
Старый 28.10.2010, 18:00
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:21.