|
|
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
В секции public float prob[3]; В теле prob[3]={0.8,0.99,0.99}; Ругается! На синтаксис. Если опрелелять массив как локальный float prob[3]={0.8,0.99,0.99}; Все ОК! Что за нафиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 13:33 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
float prob[3]={0.8,0.99,0.99} - через список инициализации можно только инициализировать массив, переприсвоить значение элементов массива таким способом нельзя - prob[3]={0.8,0.99,0.99} приведет к ошибке. Поэтому, ничего лучше не придумать, чем: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 14:21 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
Да, когда массив маленький. Вобще-то я делаю так (когда массив большой) 1. Присваиваю списком локальному массиву a 2. В цикле присваиваю глобальному b=a Выглядит это все омерзительно. Главное - не пойму, чем вызвано такое ограничение в синтаксисе языка? Или я все же что-то не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:06 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
а ты в конструкторе заполняй :) ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:14 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
float prob[3]; - это обьявление массива из трех элементов а в теле prob[3] указывает на третий элемент массива. Т.е. не на три, а на один из трех. А ты ему пытаешся впарить вместо одного числа, сразу три! Если быть уж совсем точным, ты указываешь на четвёртый элемент, которого даже несуществует(как известно от нуля считает, т.е. в данном случае 0,1,2)! Как выход из положения, либо при обьявлении указывай, либо циклом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 00:27 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
Загони в файл и читай оттуда в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:04 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
Mugger , Вы ошибаетесь. float prob[3]={0.1,0.1,0.99}; // - работает. Видимо сначала обрабатывается объявление массива, а затем инициализация. Что логично, т.к. отдельный элемент массива нельзя объявить. А вот почему то же самое не проходит для массива ГЛОБАЛЬНЫХ переменных? Грустно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 12:23 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
21man Он в чем то прав на самом деле тебе можно поставить 2 Код: plaintext 1. что собсвенно и говорили . ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 13:01 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
О чем спор-то? В C инициализация и присвоение - разные вещи. Точно так-же можно инициализитовать строкой указатель на char, но присвоить ему строку нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 13:51 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
Во-первых, Mugger прав - читайте внимательней. Во-вторых, при инициализации компилятору важно, прежде всего, сколько памяти выделять и с какого адреса выделенная область будет начинаться. Поэтому изначально все было правильно: float array[3] = {.98, .97, .99}; здесь тройка показывает количество элементов, а не смещение (т.н. индекс). А вы не пробовали передавать функции указатель на массив и работать с ним? Или можно создавать массив перед вызовом после возврата обрабатывать и убивать: //где-то там void function(float *tmp, ...); int main(){ //что-то там float *tmp = new float[3]; function(tmp, ...); //что-то происходит с tmp delete [] tmp; return 0; } но я не совсем понимаю, чем так не приглянулись циклы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 22:30 |
|
||
|
Инициировать массив
|
|||
|---|---|---|---|
|
#18+
4 Mugger Извиняюсь, я действительно невнимательно прочитал твой пост. Даже и не пойму из-за чего я так заглючил. Была надежда, что транслятор распознает что надо сделать присваивание списком прежде чем интерпретирует левую часть оператора, где схожая синтаксическая конструкция означает либо выделение места под массив, либо обращение к элементу масива. 4 JibSkeart Я допускаю, что в далекой галактике строка float prob[2]={0.1,0.1,0.99}; сможет хотя бы оттранслироваться, но в моей галактике пишут float prob[3]={0.1,0.1,0.99}; ПРичем в этом случае prob[0]=0.1 prob[1]=0.1 prob[2]=0.99 что и требовалось. "Кол" Вам не ставлю потому что 1) ни грамма не усомнился в Вашем профессионализме - "и на старуху бывает..." 2) Ды фиг его знает, как там в вашей галактике... :) С искренним уважением 1man 4 c0d310rd ИМХО способ инициализации списком очень удобен. Почему это не работает для глобальных переменных понятно. Но я не понял, что Вы предлагаете улучшить по сранению с 1) инициализируется массив локальных переменных 2) в цикле его значения переприсваиваются массиву глобальных переменных. Объявление указателя не помогут инициализации списком. Или я что-то недопонял в Ваших предложениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 11:52 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32520545&tid=2034844]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 400ms |

| 0 / 0 |
