Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание массива: expected constant expression 
:(
    Опции темы
hiquest
Дата 8.3.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



Я не очень знаю c++, так что не пинайте...
Проблема в следующим при попытке создать массив:

Код

const int ysize = floor(ysize_ / ds);
const int zsize = floor(zsize_ / ds);    

double Ex[ysize][zsize];


выводит:

Код

C:\projects\fdtd\fdtd\fdtd.cpp(97) : error C2057: expected constant expression


Спасибо.
PM MAIL   Вверх
Fedor
Дата 8.3.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата(hiquest @  8.3.2007,  22:24 Найти цитируемый пост)
double Ex[ysize][zsize];

Размер массива должен быть известен еще при компиляции. Т.е. либо это должно быть какое-то число, либо на крайняк какой-то дефайн. Иначе тебе нужно динамически выделать память с помощью malloc или new (если у тебя С++)


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
hiquest
Дата 8.3.2007, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



А не подскажите, как это делается?

Добавлено @ 22:49 
Попробовал сдеующее

Код

double *Ex = new double [ysize][zsize];


получил:

Код

C:\projects\fdtd\fdtd\fdtd.cpp(96) : error C2540: non-constant expression as array bound

PM MAIL   Вверх
Fedor
Дата 8.3.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



hiquest, опять же. сразу так для двумерного массива память выделить нельзя. Нужно по очереди smile
Примерно так:  (пишу прям в форум, компилятора нет под рукой, так что если что - не обессудьте smile)

Код

    double** Ex;
    Ex = new double*[ysize];
    for (int i = 0; i < ysize; i++ ) {
        Ex[i] = new double[xsize];
    }

    //......
    for (int i = 0; i < ysize; i++ ) {
        free(Ex[i]);
    }
    free( Ex );




--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
hiquest
Дата 8.3.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



Хм...Я, наверное, немного туповат...но все же...

на

Код

double** Ex;
Ex = new double* [ysize];
for (int i=0; i<ysize; i++) {Ex[i] = new double[zsize];}


выдал

Код

C:\projects\fdtd\fdtd\fdtd.cpp(97) : error C2501: 'Ex' : missing storage-class or type specifiers

PM MAIL   Вверх
vinter
Дата 8.3.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Fedor, выделенное с помощью new, чистится с помощью delete ,а не Free
Цитата

Т.е. либо это должно быть какое-то число, либо на крайняк какой-то дефайн.

не знаю как там по стандарту, но в студии можно константы в таком виде подставлять
hiquest, у тебя здесь ошибки нет, че за компилер?? и нет ли чего то с таким же именем??


--------------------
Мой блог
PM MAIL WWW   Вверх
hiquest
Дата 8.3.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



VC++ 6

Может дело в том, что все это происходит в "глобальной" области? до майна. У меня просто все на процедурах и, поэтому, нужно чтобы эти массивы были в зоне видимости...
PM MAIL   Вверх
vinter
Дата 8.3.2007, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



ну так конечно!! в мэйн все засунь!


--------------------
Мой блог
PM MAIL WWW   Вверх
hiquest
Дата 8.3.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



А есть способ определить их в мэйне, но сделать видимыми для всех процедур?
PM MAIL   Вверх
hiquest
Дата 8.3.2007, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.3.2007

Репутация: нет
Всего: нет



Хм... Вот оно как. Вроде, разобрался. 

Спасибо.
PM MAIL   Вверх
sergejzr
Дата 8.3.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Fedor
Дата 10.3.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата(vinter @  8.3.2007,  23:16 Найти цитируемый пост)
Fedor, выделенное с помощью new, чистится с помощью delete ,а не Free

Упс. Сорри. smile

Я просто на чистом Це пишу, плюсы уже начали потихоньку выветриваться к сожалению... :(


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Любитель
Дата 11.3.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(vinter @  8.3.2007,  23:16 Найти цитируемый пост)
не знаю как там по стандарту, но в студии можно константы в таком виде подставлять

По стандарту тоже (что логично). Дефайны для таких целей совсем не гуд.

Вообще должно работать: в мейни, в глобал - какая разница? Конечно, ysize_, zsize_ и ds тожк должны быть константны. Если не работает, то уверен, что причина в
Цитата(hiquest @  8.3.2007,  23:20 Найти цитируемый пост)
VC++ 6




--------------------
PM MAIL ICQ Skype   Вверх
vinter
Дата 11.3.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Любитель , а разве можно в глобале память выделять??


--------------------
Мой блог
PM MAIL WWW   Вверх
Любитель
Дата 11.3.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Конечно, можно. Но я говорил про изначальный код - без выделения памяти.


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.