Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
1

Нужен динамический контейнер, который будет соединять разные переменные, разных типов в блоки

02.01.2014, 19:05. Показов 3417. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем нужен динамический контейнер... который будет соединять разные переменные, разных типов в блоки.
Например есть поля Edit и Combo, после нажатия на кнопку, информация из заполненных полей будет помещяться в блок, расширение блоков нужно чтоб было примерно как в структуре, через операторы new и delete переопределять и копировать информацию.
Проблема в том что структура, на сколько мне известно не может держать в себе переменное кол-во членов(которое изменяется во время работы программы), т.е. мне наприпер в одном блоке нужно 4 char массива по 20 символов и один 300 символов, ещё туда же 2 int переменные и HWND например.
Как осуществить такую сложную динамику, и возможно ли объединять в структурные блоки переменные, которые могут позже удаляться например из блока или создавать новые в нутри одного блока (блок в моём понимании как строка из элементов ListView формы).
Возможно ли работать с структурой в таком режиме, если да то как?
И по возможности, прошу высказывать самые простые способы(т.е. например не такие сложные в синтаксисе как классы), идеальным для меня вариантом было бы использование структур(возможно вложенных или "дружественных")
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2014, 19:05
Ответы с готовыми решениями:

Статический контейнер для разных типов
Доброго здоровица. Как объявить контейнер для хранении различных типов? Правилен ли такой метод?...

Показать разные блоки для разных устройств
Здравствуйте, Есть блок <div class="block"></div> Нужно чтобы если пользователь зашел с ios...

Разделение строки на переменные разных типов
Помогите с разделением строки Есть String dat dat = "40.10 50.10 60.10 70.10 11:15:23 4-03-2012"...

Объявить переменные разных типов в заголовке for
Здравствуйте, хочу узнать можно ли как-то объявить в for переменные разных типов, например:...

21
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
02.01.2014, 19:14 2
Интересная задачка. Вряд ли можно на C++ такое сделать, статическая типизация ведь.
А как Вы видите себе использование такого контейнера ? Можно пример (псевдо)кода ?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.01.2014, 19:21 3
Для безымянных экземпляров классов типизация смешанная: статически типизируется иерархия и динамически фактический класс.
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
02.01.2014, 19:40  [ТС] 4
Я думаю, изначально создать с десяток структур по каждому виду переменной в структуре, например для int:
C++
1
2
3
4
5
struct integers
{
int N;
};
integers *na, interegs *nb;
При добавлении новой переменной вида int, она заносится в свою integer структуру...

Теперь далее, т.к. структура не поддерживает динамические массивы как члены, то в структуре, описывающюю какой либо объект, хранить число как кол-во членов в ней, а так же типы этих членов как "typedef enum" тип, на основе которого будет программа расфосовывать переменные. На основе этой структуры(объекта), создавать новую основанную на кол-ве членов и их типах, в этой структуре возможно переменные определять с помощью указателей(или даже просто числа, т.к. важен порядковый номер в базовой структуре, через который можно обратиться за данными) на переменные, хранящиеся в interegs и т.п. структурах.
Однако это лишь часть моей задумки, динамическое кол-во членов всё равно не сможет поддерживаться структурой, придётся возможно создавать структуры основанные на числе его членов как статическом, например для объектов будет 3 структуры по 5, 10 и 20 членов(как один массив внутри структуры), иначе если брать слишком много - будет утечка памяти в итоге, т.к. если мне нужна структура на 3 эл., а статически массив выделяется в структуре на 20 эл-во, а они так и не будут использованны, другое дело от 2 до 7 эл-ов...
Хотя мне так не нравится, код будет не красивым, желанной динамики не будет...
П.С. кстати, а можно ли узнать сколько памяти съела структура?.. например "N=20; na=new integers[N];"

Добавлено через 9 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
Для безымянных экземпляров классов типизация смешанная: статически типизируется иерархия и динамически фактический класс.
Вы думаете что есть толк от того что вы сказали? =)
Простым языком пожалуйста, и если можно с примером реализации.
И опять же, я не хотел использовать классы, но если вариантов больше нет, то придётся... Однако мне нужен пруф, что без классов и т.п. мути типа векторов, работу с которыми вразумить тяжело... Читабиельность кода падает в разы.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
02.01.2014, 20:05 5
Цитата Сообщение от Izual Посмотреть сообщение
Я думаю, изначально создать с десяток структур по каждому виду переменной в структуре, например для int:
...
Теперь далее, т.к. структура не поддерживает динамические массивы как члены, то в структуре, описывающюю какой либо объект, хранить число как кол-во членов в ней, а так же типы этих членов как "typedef enum" тип, на основе которого будет программа расфосовывать переменные. На основе этой структуры(объекта), создавать новую основанную на кол-ве членов и их типах, в этой структуре возможно переменные определять с помощью указателей(или даже просто числа, т.к. важен порядковый номер в базовой структуре, через который можно обратиться за данными) на переменные, хранящиеся в interegs и т.п. структурах.
А не проще для таких задач использовать кодогенераторы ?
А вообще, мне сразу вспоминается тип VARIANT из COM:

VARIANT structure
http://msdn.microsoft.com/en-u... 85%29.aspx
Наглядный пример структуры, которая умеет хранить множество типов...

А вот советую еще заглянуть сюда, может убережет от написания очередного велосипеда:

Boost.Any
http://www.boost.org/doc/libs/... l/any.html
1
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
03.01.2014, 00:25  [ТС] 6
VARIANT - Чтобы хранить одну структуру, смешанного типа ?
Вообще я использую VARIANT для работы с Auto Excel, но обрабатывать все возможные типы возвращяемые VARIANT функциями не считаю нужным...
Да и проблема с типами меня мало тревожит, по сравнению с задачей по динамическому изменению кол-ва членов у объектов..
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.01.2014, 10:07 7
Цитата Сообщение от Izual Посмотреть сообщение
Вы думаете что есть толк от того что вы сказали? =)
Простым языком пожалуйста, и если можно с примером реализации.
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
30
31
32
33
34
35
36
37
38
39
40
class A
{
};
class B:A
{
};
class C:A
{
};
class D
{
};
class E:D
{
};
class F:D
{
};
A *a;
D *d;
a=new B; // можно, A и его потомки для безымянных указателей объектов, выделенных по указателю на A типизируются динамически
delete a;
a=new C; // можно, A и его потомки для безымянных указателей объектов, выделенных по указателю на A типизируются динамически
delete a;
a=new D; // нельзя, строгая статическая типизация
delete a;
a=new E; // нельзя, строгая статическая типизация
delete a;
a=new F; // нельзя, строгая статическая типизация
delete a;
d=new E; // можно, D и его потомки для безымянных указателей объектов, выделенных по указателю на D типизируются динамически
delete d;
d=new F; // можно, D и его потомки для безымянных указателей объектов, выделенных по указателю на D типизируются динамически
delete d;
d=new A; // нельзя, строгая статическая типизация
delete d;
d=new B; // нельзя, строгая статическая типизация
delete d;
d=new C; // нельзя, строгая статическая типизация
delete d;
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
03.01.2014, 14:12  [ТС] 8
taras atavin, что это? Как это использовать?... Как это решает задачу с динамическим изменением кол-ва членов по ходу работы программы?
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
05.01.2014, 17:29  [ТС] 9
Раз пока что адекватного выхода из первоначального вопроса не найдено, то думаю что обойдусь отдельной переменной в структуре, которая будет отвечать за номер блока, если он нужен.
Кстати столкнулся с небольшими трудностями:
1. Типа HWND в VARIANT структуре нет, где то на задворках яндекса что то невнятное говорили на английском, мол HWND можно считать как Long тип, хотя не понятно как обращяться с этим тогда.
2. Как сделать Нное кол-во массивов структур(хотя написал видимо не корректно). Поясню:
C++
1
2
3
4
5
6
7
8
9
int nl=10;
struct per
{
VARIANT type;
int blok;
char zn[20];
};
integers *na, interegs *nb;
na=new per[nl];
Я могу объявить новый массив только с именами, которые уже объявил: "na" и "nb". Как можно создать динамически новое имя?.. или может массив от одного имени?..
3. Тут же ещё одна неприятность, даже если я добавлю новую переменную в структуру, исходя из его типа мне нужно присвоить ему значение, т.е. для int - цыфру, для char - массив символов и т.п. Как заделать в структуре подобное? Я пока что не придумал(потому впихнул просто "char zn[20];", который можно методом atoi конвертировать, хотя 19 символов мне кажется не всегда будет достаточно), хотя начитал в интернете, что можно пользоваться неопределённым типом в указателях, например void *p; А потом уже присваивать тип ему и добавлять данные. ( но опять же, указатели не переменные, могут и потерятся, а если использовать доп. указатели, то может быть overhead адресации...
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.01.2014, 09:22 10
Цитата Сообщение от taras atavin Посмотреть сообщение
Для безымянных экземпляров классов типизация смешанная: статически типизируется иерархия и динамически фактический класс.
Нет там никакой динамической типизации. Динамическое связывание не есть динамическая типизация.

Добавлено через 35 секунд
Izual, есть в бусте классы boost::any/boost::variant. Есть подобное и в Qt.
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
10.01.2014, 16:05  [ТС] 11
Суть задачи состоит в динамическом распределении переменных в динамическом двумерном массиве структур. Тип и значение которые возвращяет Variant лишь 1 из переменных измеряемой единицы, ещё нужно удобное обращение к переменным, т.е. их структуризация, при этом такое же лёгкое как в структуре, где всего 1 тип соединительного символа(точка).
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.01.2014, 17:37 12
Izual, если все типы заведомо известны - можно попробовать union. Но тут другая загвоздка - для обращения к элементу union'а нужно заранее знать его тип. Короче говоря, универсального решения данной задачи в статически типизируемом языке вряд ли удастся добиться.

Добавлено через 51 секунду
Или погодите, у меня почему-то создаётся ощущение, что я неверно понял задачу...
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
10.01.2014, 18:11  [ТС] 13
Вы верно поняли, мне нужно создавать в блоки "двумерных массивов" переменные разных типов, например: создать таблицу, введите кол-во строк и столбцов, выберите типы данных в колонках, введите значения.

При этом я например хочу, чтоб в процессе работы я мог изменить тип в какой то колонке... Для этого я предполагаю, что если бы структура поддерживала динамические массивы типа: int mk[][];, но так к сожалению нельзя сделать... Потому проще использовать простые массивы, а их по доп. переменной уже сортировать(находить) среди структуры, содержащей все созданные\загруженные перменные.
Т.е. в конечном итоге это будет что то типа интерпритатора к собственным файлам параметров.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2014, 11:29 14
Цитата Сообщение от Izual Посмотреть сообщение
если бы структура поддерживала динамические массивы типа: int mk[][]
С++ же. std::vector<std::vector<int> > - двумерный динамический массив.
Цитата Сообщение от Izual Посмотреть сообщение
Т.е. в конечном итоге это будет что то типа интерпритатора к собственным файлам параметров.
Тогда вам лучше организовать иерархию классов, каждый подкласс в иерархии будет представлять собственный тип данных в таблице, все они наследуются от какого-нибудь одного класса, в итоге в ячейках таблицы будут храниться указатели на базовый класс, которые будут указывать на объекты производных конкретных классов, каждый из которых будет хранить собственный тип данных.
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
11.01.2014, 17:20  [ТС] 15
мне придётся так делать, почему с самого начала я вообще хотел несколько структур, содержащих либо char buf[50] либо int zn как значение любой переменной.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2014, 22:49 16
Цитата Сообщение от Izual Посмотреть сообщение
Но вся проблема в простоте читабиельности кода, я очень не хочу пользоваться классами и вектором в частности, т.к. такой вид данных трудно читается, в отличии от обычных структур, даже вложенных.
Очень спорное заявление. В использовании вектор такой же, как и обычные массивы (индексация) плюс такие плюшки, как расширение размера, которые явно читабельнее, чем перевыделение памяти и копирование из старой памяти в новую с последующим освобождением старой. А если не нравится, как выглядит объявление вектора, то пожалуйста - используйте typedef:
C++
1
2
3
4
5
6
7
8
typedef std::vector<int> int_array;
typedef std::vector<int_array> int_array_2d;
 
struct Foo {
    // ...
    int_array_2d arr;
    // ...
};
Цитата Сообщение от Izual Посмотреть сообщение
Кстати, а как это реализовать:
Не могли бы вы для начала описать задачу более полно? Чего вы пытаетесь добиться? Кто знает, вдруг проблему можно решить менее глобальным и общим способом, чем вы это себе представляете?
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
12.01.2014, 04:48  [ТС] 17
1. Ну я создал допустим fn *foo, через new например с 20 элементами. А как же я даже имея такую структуру смогу контролировать не только кол-во строк(кол-во эл.), но и кол-во столбцов(т.е. кол-во arr элементов, как например arr[10])?...

2. Задачки на динамику, после целого года работы над программой в WinApi (создаю собственну базу данных с связью авто экселя и парсинга), подумалось что надоело руками писать код постоянно один и тот же, только лишь меняя название массивов и др. перменных. Захотелось попробовать реализовать способ программирования через блок схемы с интерфейсом, это бы сильно упростило труд.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.01.2014, 14:29 18
Цитата Сообщение от Izual Посмотреть сообщение
1. Ну я создал допустим fn *foo, через new например с 20 элементами. А как же я даже имея такую структуру смогу контролировать не только кол-во строк(кол-во эл.), но и кол-во столбцов(т.е. кол-во arr элементов, как например arr[10])?...
Не очень понял, о чём вы спросили. Если речь о выделяемых вручную динамических массивах - вам надо отдельно хранить количество строк и столбцов, потому что на основе уже выделенной памяти размер этой памяти узнать невозможно (стандартными средствами, по крайней мере). Если речь о стандартном векторе - arr.size() вернёт количество строк, arr[i].size() - количество элементов в i-й строке (по сути количество столбцов, если принять, что количество элементов во всех строках совпадает, а в вашем случае это так и есть).
Цитата Сообщение от Izual Посмотреть сообщение
2. Задачки на динамику, после целого года работы над программой в WinApi (создаю собственну базу данных с связью авто экселя и парсинга), подумалось что надоело руками писать код постоянно один и тот же, только лишь меняя название массивов и др. перменных. Захотелось попробовать реализовать способ программирования через блок схемы с интерфейсом, это бы сильно упростило труд.
Опять же, мало что понял. О какой динамике речь? Если о динамическом программировании (что, по сути, является разделом математики, точнее теории оптимизации, а не программирования), то не понятно, при чём тут эксель и базы данных. Далее, что вы подразумеваете под программированием через блок-схемы? Вы пишете приложение для генерации кода на основе построенной пользователем блок-схемы (описания алгоритма работы программы на языке блок-схем)?
Не подумайте, я не издеваюсь, просто хочется понять проблему в той мере, чтобы её можно было попытаться решить.
Давайте так. Чтобы понять, зачем вам реализация обобщённых таблиц, мне не нужно знать полностью постановку вашей задачи. Мне нужно знать только постановку подзадачи, т.е. только той части, которая связана с использованием обобщённых таблиц в коде. Опишите, что бы вы хотели получить, как бы хотели работать с такими обобщёнными таблицами (можно написать пример на псевдокоде с С++-подобным синтаксисом, например).
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
12.01.2014, 18:48  [ТС] 19
1. Про векторы я вообще ничё не знаю, потому стандартный или нет - мне по фене Мне главное услышать или увидеть что моя задача по : "Динамическому заданию кол-ва строк и столбцов, а так же типов в них(на основе колонок)" может быть решаема не простыми массивами, а структурированнми данными.
Кол-во строк и столбцов вводимая\читаемая информация, так же как типы данных в них(например захочу в 2 колонке тип WORD, а в 5 - string, при этом было бы хорошо потом в процессе работы чтоб можно тоже было поменять.
Обычными структурами я хранил данные статичных типов и кол-ва столбцов(согласно кол-ву пременных структуры), а вот кол-во строк можно было изменить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int nl=0;
char MainLV[12][12]={"№ строки", "Абонент", "Улица", "Дом", "Счётчик", "Марка", "Год", "Коэффициент", "Тариф", "Энергия", "Лицо", "Значность"};
int iMLV[12]={30, 80, 120, 60, 100, 70, 50, 50, 70, 70, 70, 50};
struct mainb
{
    char pn[5],ab[15],name[30],dom[10],nch[20],marka[20],god[5],koef[5],tarif[5],energy[10],lico[10],znach[5];
};
mainb *mac, mainb *mbc;
main:
nl=10;
mac=new mainb[nl];
for(int i=0;i<nl;i++)
    {
        lstrcpy(mac[i].ab, "ab");
        lstrcpy...
    }
Потом естественно расширять весь массив структур можно будет через второй указатель *mbc и увеличение nl.
Тут плотная привязка к кол-ву переменных в структуре, я могу сделать:
C++
1
2
3
4
struct tarif
{
    char m[12][10];
};
Но я явно укажу кол-во членов в строке, тут вариант до 12 элементов указывать, ну и добавить переменную которая будет указывать на тек. кол-во строк, и обращяться до этого числа. Получится что структура будет забирать больше памяти чем нужно... ну это я писал уже.

Если вектор может дать нужные мне возможности, то если есть кусочек кода что ли с примером обращения к таким членам и их использовании в конвертировании, я был бы рад его увидеть - для наглядности.

Добавлено через 6 минут
П.С.
является разделом математики, точнее теории оптимизации, а не программирования
*И программирования, так как процессу логического мышления отделяется "львиная доля". Ну в принципе, хочу интерфейс и возможности чуть по расширенней чем в программе Excel, вот и думаю над базовыми алгоритмами, которые уже используются, но в статическом варианте(как было показано). Блок схемы это в прямом понимании структурирование элементов кода, таких как операторы - в интерфейс\лог.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
13.01.2014, 06:55 20
Цитата Сообщение от Izual Посмотреть сообщение
Если вектор может дать нужные мне возможности, то если есть кусочек кода что ли с примером обращения к таким членам и их использовании в конвертировании, я был бы рад его увидеть - для наглядности.
Вектор может дать вам только те же возможности, что и стандартные массивы плюс такие дополнительные вещи, как динамическое расширение размера, получение текущего размера, ну и множество дополнительных полезных методов, о которых можно почитать в документации по стандартной библиотеке. Сам вектор строго типизированный, он не позволит сам по себе выбирать тип элемента, это надо писать самостоятельно либо пользоваться уже упомянутыми мною boost::any/boost::variant.
Вот пример работы с вектором (заполнение и вывод на экран двумерной матрицы с динамическим добавлением элементов в вектор)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
 
// Вспомогательная функция, возвращает случайное число в промежутке [lower, upper)
int get_random_value(int lower, int upper)
{
    return static_cast<int>(lower + (upper - lower) * static_cast<double>(std::rand()) / RAND_MAX);
}
 
int main() {
    // Инициализация генератора случайных чисел
    std::srand(static_cast<unsigned>(std::time(0)));
    
    // Создаём матрицу. Пока она пустая, размера 0x0
    std::vector<std::vector<int> > matrix;
    int rows, cols;
    
    // Генерируем случайный размер матрицы
    rows = get_random_value(2, 7);
    cols = get_random_value(2, 7);
    
    // Заполняем матрицу
    for (int i = 0; i < rows; ++i) {
        // Создаём пустую строку матрицы
        std::vector<int> row;
        // Заполняем строку
        for (int j = 0; j < cols; ++j) {
            // С помощью метода push_back помещаем очередной элемент в конец строки
            // Расширение размера строки происходит автоматически
            row.push_back(get_random_value(-10, 10));
        }
        
        // Помещаем строку в конец матрицы
        // Расширение количества строк также происходит динамически
        matrix.push_back(row);
    }
    
    // Выводим сгенерированную матрицу
    // Метод size() возвращает количество элементов в векторе, т.е. в данном
    // случае по сути количество строк матрицы
    for (int i = 0; i < matrix.size(); ++i) {
        // Выводим очередную строку. Метод size вернёт размер строки
        for (int j = 0; j < matrix[i].size(); ++j) {
            // Индексируем матрицу. В данном случае оператор matrix[i] возвращает
            // ссылку на i-ую строку матрицы, к которой мы также применяем
            // оператор индексации для получение ссылки на j-й элемент строки
            std::cout << matrix[i][j] << "\t";
        }
        
        std::cout << std::endl;
    }
    
    return 0;
}
Я специально написал код, который добавляет все элементы динамически. На самом деле в данном случае правильнее было бы выделить всю матрицу сразу вот так:
C++
1
2
int rows = get_random_value(2, 7), cols = get_random_value(2, 7);
std::vector<std::vector<int> > matrix(rows, std::vector<int>(cols, 0));
Здесь используется форма конструктора, принимающего количество элементов и инициализирующий элемент. Для вектора первого уровня количество элементов соответствует количеству строк, а инициализирующим элементом является строка - вектор размером cols с инициализирующим элементом 0.
В этом случае для такой матрицы уже не нужно использовать оператор push_bakc (вся нужная память уже выделена), а работать с ней необходимо сразу через индексацию. Вывод не будет отличаться от приведённого в коде выше, а вот заполнение уже нужно выполнять так:
C++
1
2
3
4
5
for (int i = 0; i < matrix.size(); ++i) {
    for (int j = 0; j < matrix[i].size(); ++j) {
        matrix[i][j] = get_random_value(-10, 10);
    }
}
Также стандартные векторы (как и любые стандартные контейнеры) поддерживают итераторы, с помощью которых удобно и, что главное, переносимо (т.е. независимо от фактического типа контейнера) перемещаться по контейнеру.
Векторы позволят вам решить эту проблему:
Цитата Сообщение от Izual Посмотреть сообщение
Получится что структура будет забирать больше памяти чем нужно...
0
13.01.2014, 06:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2014, 06:55
Помогаю со студенческими работами здесь

Массив включающий переменные разных типов
Подскажите пожалуйста, каким образом можно вставить в массив чисел символ? Вариант с...

Почему разные переменные разных функций lambda равны?
# coding: utf8 import random def hv(): global a global b a = &quot;dfg&quot; b =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru