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

Динамический массив структур - C++

Восстановить пароль Регистрация
 
roma88gruzd88
6 / 6 / 1
Регистрация: 28.04.2013
Сообщений: 103
23.08.2013, 11:05     Динамический массив структур #1
Здравствуйте. Нужна помощь.
Не получается записать данные в массив структур. По логике вроде все правильно.
1. Создаем динамический массив структур
2. Обращаемся к первому эл. - записываем данные и т.д
но почему-то компилятор не воспринимает такой способ записи, подскажите где ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
struct CandyBar//
{
    char name[20];
    double ves;
    int kal;
};
int main()
{
    using namespace std;
    setlocale(LC_ALL, "RUS");
    CandyBar *mas = new CandyBar[3]; //динамический массив структур
    mas[0] = {"Mocha Munch", 2.3, 350};//инициализация 1-ого эл массива
    mas[1] = {"Lays", 2.5, 500};// 2-го
    mas[2] = {"Coca Cola", 5.2, 1000}; //3-го
    cout << "Наименование: " << mas[0].name << ", " << "вес: " << mas[0].ves << ", " << "Калорийность: " << mas[0].kal << endl;
    cout << "Наименование: " << mas[1].name << ", " << "вес: " << mas[1].ves << ", " << "Калорийность: " << mas[1].kal << endl;
    cout << "Наименование: " << mas[2].name << ", " << "вес: " << mas[2].ves << ", " << "Калорийность: " << mas[2].kal << endl;
        delete []  mas;
    return 0;
}

Заранее всем Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 11:05     Динамический массив структур
Посмотрите здесь:

Динамический массив структур C++
Динамический массив структур C++
C++ Динамический массив структур ...
C++ Динамический массив структур
Динамический массив структур C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
23.08.2013, 11:16     Динамический массив структур #2
Цитата Сообщение от roma88gruzd88 Посмотреть сообщение
но почему-то компилятор не воспринимает такой способ записи, подскажите где ошибка.
Ошибка в способе записи, ты же сам об этом говоришь.
Записывай поэлементно.
C++
1
2
3
4
5
    ...
    strcpy( mas[0].name, "Mocha Munch" );
    mas[0].ves = 2.3;
    mas[0].kal = 350;
    ...
roma88gruzd88
6 / 6 / 1
Регистрация: 28.04.2013
Сообщений: 103
23.08.2013, 11:22  [ТС]     Динамический массив структур #3
Цитата Сообщение от castaway Посмотреть сообщение
Записывай поэлементно.

Хотелось бы как-нить компактнее сделать, но видимо придется поэлементно)
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
23.08.2013, 11:24     Динамический массив структур #4
Цитата Сообщение от roma88gruzd88 Посмотреть сообщение
но почему-то компилятор не воспринимает такой способ записи, подскажите где ошибка.
Такая форма инициализации появилась в стандарте C++11, и то вам всё же необходимо указать тип данных:

C++
1
2
3
4
    // line 14
    mas[0] = CandyBar{"Mocha Munch", 2.3, 350};//инициализация 1-ого эл массива
    mas[1] = CandyBar{"Lays", 2.5, 500};// 2-го
    mas[2] = CandyBar{"Coca Cola", 5.2, 1000}; //3-го
roma88gruzd88
6 / 6 / 1
Регистрация: 28.04.2013
Сообщений: 103
23.08.2013, 11:28  [ТС]     Динамический массив структур #5
Цитата Сообщение от anmartex Посмотреть сообщение
Такая форма инициализации появилась в стандарте C++11, и то вам всё же необходимо указать тип данных:

у меня не поддерживается такой способ =(
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
23.08.2013, 11:42     Динамический массив структур #6
Цитата Сообщение от roma88gruzd88 Посмотреть сообщение
у меня не поддерживается такой способ =(
Ну тогда делайте так, как вам советовал castaway

Хотя можно ещё попробовать описать конструктор у структуры CandyBar
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//...
struct CandyBar
{
    char name[20];
    double ves;
    int kal;
 
    CandyBar() { ; }
    CandyBar(const char* theName, double theVes, int theKal)
    {
        strncpy(name, theName, sizeof(name));
        ves = theVes;
        kal = theKal;
    }
};
//...
    mas[0] = CandyBar("Mocha Munch", 2.3, 350);//инициализация 1-ого эл массива
    mas[1] = CandyBar("Lays", 2.5, 500);// 2-го
    mas[2] = CandyBar("Coca Cola", 5.2, 1000); //3-го
//...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 13:49     Динамический массив структур
Еще ссылки по теме:

C++ Динамический массив структур
C++ Динамический массив структур
C++ Динамический массив структур

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

Или воспользуйтесь поиском по форуму:
roma88gruzd88
6 / 6 / 1
Регистрация: 28.04.2013
Сообщений: 103
23.08.2013, 13:49  [ТС]     Динамический массив структур #7
сделал поэлементно...на данном этапе для меня сойдет) Всем Спасибо)
Тема закрыта!
Yandex
Объявления
23.08.2013, 13:49     Динамический массив структур
Ответ Создать тему
Опции темы

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