Форум программистов, компьютерный форум CyberForum.ru

Инициализация массива внутри структурированнного типа - C++

Восстановить пароль Регистрация
 
Wik
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 4
14.06.2012, 10:35     Инициализация массива внутри структурированнного типа #1
Добрый день!

Прошу помочь разобраться.
Компилятор ругается "[C++ Error] Unit1.cpp(204): E2188 Expression syntax" при присвоении значений массиву внутри структурированной переменной.
Программу компилирую в C++Builder 5.

Так как программа очень объемная, то привожу только часть кода - объявление структурированного типа, определение и вызов функции, которая инициализирует переменную.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct TARIF
{
  float Gruppa1[15];
  float Gruppa2[15];
  float Gruppa3[15];
  float Gruppa4[15];
  float Gruppa5[15];
  float Gruppa6[15];
  float Gruppa7[15];
  float Gruppa8[15];
} Tarif[1];
 
void InitTarif(struct TARIF *t)
{
  t[0].Gruppa1[15]={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
  t[0].Gruppa2[15]={6.05,6.05,6.05,6.05,7.63,7.63,7.63,7.63,8.84,8.84,8.84};
  t[0].Gruppa3[15]={5.58,5.58,5.58,5.58,7.16,7.16,7.16,7.16,8.37,8.37,8.37};
  t[0].Gruppa4[15]={5.12,5.12,5.12,5.12,6.70,6.70,6.70,6.70,7.91,7.91,7.91};
  t[0].Gruppa5[15]={6.06,6.06,6.06,6.06,7.64,7.64,7.64,7.64,8.85,8.85,8.85};
  t[0].Gruppa6[15]={6.32,6.32,6.32,6.32,7.44,7.44,7.44,7.44,8.37,8.37,8.37};
  t[0].Gruppa7[15]={2.60,2.60,2.60,2.60,2.98,2.98,2.98,2.98,3.44,3.44,3.44};
  t[0].Gruppa8[15]={1.90,1.90,1.90,1.90,2.40,2.40,2.40,2.40,3.00,3.00,3.00};
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Init(Osnova,sprFL,sprCar,sprDogov,FIO,Car);
InitTarif(Tarif);
}
Пробовал писать операцию присвоения по всякому:
t[0].Gruppa1[15]={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
t[0].Gruppa1[]={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
t[0].Gruppa1={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
t[0].Gruppa1[15]={6,6,6,6,8,8,8,8,9,9,9};

Ни один из вариантов не сработал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 10:35     Инициализация массива внутри структурированнного типа
Посмотрите здесь:

Инициализация массива C++
инициализация массива внутри case C++
проблема - инициализация класса A внутри класса B C++
Осуществить операцию типа. Код внутри C++
Инициализация обьекта внутри другого класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zuzik
 Аватар для Zuzik
219 / 204 / 34
Регистрация: 11.06.2012
Сообщений: 1,333
14.06.2012, 11:02     Инициализация массива внутри структурированнного типа #2
я конечно с С++ работал мало но - где выделение памяти под все эти массивы?
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
14.06.2012, 11:15     Инициализация массива внутри структурированнного типа #3
Нужно явно задать цикл для заполнения массива. Ни один из предложенных вами вариантов и не должен работать.

Могу указать на ошибки, если нужно.

Добавлено через 8 минут
Цитата Сообщение от Zuzik Посмотреть сообщение
где выделение памяти под все эти массивы?
Массивы выделяются статически, выделение памяти не обязательно.
Wik
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 4
14.06.2012, 11:29  [ТС]     Инициализация массива внутри структурированнного типа #4
Укажите, пожалуйста, ошибки. Из того что я видел в учебниках и т.д. такая инициализация должна работать.
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
14.06.2012, 11:34     Инициализация массива внутри структурированнного типа #5
t[0].Gruppa1[15]={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
Присваивание несуществующему 15-му элементу массива с диапазоном [0;15).
t[0].Gruppa1[]={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
Невозможно в данном случае, только при инициализации.
t[0].Gruppa1={6.51,6.51,6.51,6.51,8.09,8.09,8.09,8.09,9.30,9.30,9.30};
Присваивание списка инициализации указателю на первый элемент массива.
t[0].Gruppa1[15]={6,6,6,6,8,8,8,8,9,9,9};
Бессмысленно - ничего не изменилось (см. выше)
Wik
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 4
14.06.2012, 11:51  [ТС]     Инициализация массива внутри структурированнного типа #6
Кажется понял почему не срабатывает gruppa[]={1,2,3,4,5} - в основном про этот вариант я думал что должен работать.

спасибо большое за объяснение )))))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 11:55     Инициализация массива внутри структурированнного типа
Еще ссылки по теме:

Инициализация массива строк внутри класса C++
C++ инициализация переменной, которая определена внутри функции
BST дерево. Инициализация класса внутри класса C++

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

Или воспользуйтесь поиском по форуму:
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
14.06.2012, 11:55     Инициализация массива внутри структурированнного типа #7
Пожалуйста
Вот вам информация ещё, для облегчения дальнейшего поиска
Цитата Сообщение от Wik Посмотреть сообщение
такая инициализация должна работать.
Не инициализация, а присваивание.
Yandex
Объявления
14.06.2012, 11:55     Инициализация массива внутри структурированнного типа
Ответ Создать тему
Опции темы

Текущее время: 16:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru