| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > инициализация в цикле |
| Автор: slutsker 30.7.2007, 08:52 | ||
вот к примеру хочу проиничциализировать перем а1 до а20, если к примеру написать
то 20 раз проиниц перем ai... как же реализовать инициализацию в цикле |
| Автор: Daevaorn 30.7.2007, 09:12 |
сделать массив из 20 элементов |
| Автор: OKaDO 30.7.2007, 09:14 | ||
| Очень интересный вопрос... А массивами не пробовал пользоваться
|
| Автор: slutsker 30.7.2007, 09:15 |
| Daevaorn, будешь смеяться но я это спрашивал, чтобы применить к массивам только не предлогайте двумерные массивы)))) я привел простой пример, там идут цифры, а что делать если ты хочешь проинициализировать перем от a до z или еще в таком роде... неужели нет ниакого способа? |
| Автор: slutsker 30.7.2007, 09:25 |
| OKaDO, спасибо за совет, но тоже самое я предложил в этом http://forum.vingrad.ru/forum/topic-165637.htmlна 5 минут раньше! наверно я в курсе как создать массив!)))) |
| Автор: bsa 30.7.2007, 09:31 | ||
slutsker, я вот читаю все твои здесь сообщения и у меня возникает ощущение, что телепатических способностей мне явно не хватает, чтобы тебя понять. В частности, ты хочешь проинициализировать переменные a, b, c, ... z в цикле или хочешь присвоить элементам массива значения 'a', 'b', 'c', ... 'z'? Если первое, то это нереально. Если второе, то:
|
| Автор: OKaDO 30.7.2007, 09:44 | ||
Не спорю... просто не совсем был понятен вопрос |
| Автор: slutsker 30.7.2007, 09:50 |
| bsa, первое!!! но только с оговорками... вот я и хотел узнать реально это или нет! |
| Автор: dizzy1984 30.7.2007, 12:46 | ||||
Инициализация переменых a1-a20
Инициализация массива из 20-ти элементов
Если данные однородные, используй массив и цикл для работы с ним. Если данные логически различаются, инициализируй каждую переменную отдельно. |
| Автор: Solomon 30.7.2007, 12:59 | ||
Зачем??? можеш привести пример где a1...a20 удобнее использовать чем a[20]???? |
| Автор: akizelokro 30.7.2007, 13:18 |
| Реально, но уж больно неоптимально. Выделяешь кусок памяти, достаточный чтобы уложить туда по порядку переменные от a до z, а потом в цикле делаешь инкремент указателя. Сами а-z в цикле не фигурируют, обращаещься к ним потом. Вроде так, но я давно не писал. Могу ошибиться. Хотя и этот способ похож на работу с массивом. Типа хезы E t1[N]; E *a = &t1[0]; E *b = &t1[1]; ..... E *z = &t1[N-1]; for(int i=0;i<N;i++) t1[i]=(T)i; а вот прокатит ли E *ai=&t1[0]; for(int i=0;i<N;i++) *ai++=i; ...ыхгм. В принципе, можно и оператор отоверлоадить, чтобы он в цикле жучил ai=i; а на самом деле инициализировал a-z по порядку. Что-то из этого сработает... только зачем? |
| Автор: slutsker 30.7.2007, 13:44 | ||||
это мне подходит))))) |
| Автор: dizzy1984 31.7.2007, 05:02 | ||||||
Часть 3d-движка, основная процедура занимается трассировкой лучей для определения расстояния до ближаешего препятствия относительно позиции игрока. Среди определений к типу long int относится 20 переменных.
Места использования выглядят примерно так
А теперь представь что было бы, если бы мы записали их как массив из 20-ти переменных long int. Что было бы с читаемостью и самодокументируемостью такого кода. |
| Автор: zkv 31.7.2007, 05:16 | ||||
а так:
не утверждаю, что так лучше, как альтернативу привел |