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

Динамическое создание переменных - C++

Восстановить пароль Регистрация
 
2891535
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 6
29.07.2014, 16:42     Динамическое создание переменных #1
Есть строка введённая с клавиатуры пользователем, к примеру такая: "a+b+c", как создать динамические переменные, допустим типа int a, b, c?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
29.07.2014, 16:55     Динамическое создание переменных #2
Есть строка введённая с клавиатуры пользователем, к примеру такая: "a+b+c", как создать динамические переменные, допустим типа int a, b, c?
C++
1
2
std::map<std::string,int>variables_map;
variables_map["a"]=3;
А чтоб доступ был как к обычным переменным (a=3), но имя и число переменных не известны на стадии компиляции - никак.
Troll
 Аватар для Troll
1 / 1 / 0
Регистрация: 25.03.2012
Сообщений: 15
29.07.2014, 16:58     Динамическое создание переменных #3
как по мне просто не стоит себе усложнять жизнь. если три переменные с клавиатуры, то

C++
1
2
int x, b, c;
cin>>x>>b>>c;
2891535
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 6
29.07.2014, 17:01  [ТС]     Динамическое создание переменных #4
А если сделать динамический массив? и вот эти a, b, c будут элементами массива?

Добавлено через 47 секунд
в том то и дело что не понятно сколько будет переменных три, или больше
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
29.07.2014, 17:03     Динамическое создание переменных #5
А если сделать динамический массив? и вот эти a, b, c будут элементами массива?
Тогда их придется вытаскивать по индексу, а не по имени. Что для парсера не слишком удобно.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
30.07.2014, 16:25     Динамическое создание переменных #6
Цитата Сообщение от 2891535 Посмотреть сообщение
в том то и дело что не понятно сколько будет переменных три, или больше
Если однотипные, то массив. Если разнотипные, то массив структур. Если вообще ничего не известно, то застрелишься.
aleks_tar
2 / 2 / 0
Регистрация: 19.06.2014
Сообщений: 17
30.07.2014, 19:07     Динамическое создание переменных #7
Можно взять вектор и записывать все значения переменных в него и потом их всех складывать, к примеру. (код написал на коленке)

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
// вектор для переменных - простая динамическая структура данных
// можно взять любую другую, удобную для Вас структуру (std::list, к примеру)
std::vector variables; 
 
// значение текущей переменной
int value = 0;
 
 
while(...)
{
    // получение значения текущей переменной
    std::cin >> value;
    // добавление значения переменной в вектор (массив)
    variables.push_back(value);
}
 
// переменная для результата вычислений
int result = 0;
 
// вычисление результата
// в данном случае я вижу, что нужно делать сложение
for(int i = 0; i < variables.size(); ++i)
{
    result += variables.at(i);
}
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
31.07.2014, 09:39     Динамическое создание переменных #8
Недостаточно просто выделить память под указатель?
C++
1
int* a = new int[n];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 09:42     Динамическое создание переменных
Еще ссылки по теме:

Динамическое создание массива C++
C++ Динамическое создание форм C++ ( Не MFC )
C++ Динамическое создание структуры

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

Или воспользуйтесь поиском по форуму:
aleks_tar
2 / 2 / 0
Регистрация: 19.06.2014
Сообщений: 17
31.07.2014, 09:42     Динамическое создание переменных #9
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
Недостаточно просто выделить память под указатель?
Конечно, недостаточно. Память ещё нужно освободить после этого.
Yandex
Объявления
31.07.2014, 09:42     Динамическое создание переменных
Ответ Создать тему
Опции темы

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