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

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

18.02.2014, 14:05. Показов 6002. Ответов 47

Сабж. Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур или... пободного рода простых для восприятия методов.
Поясню.
Пишу базу дынных, используя структуры я могу получить динамически кол-во строк исходя из данных в структуре.
Например:
C++
1
2
3
4
5
6
struct addition
{
    char m[10][20];
};
addition *ma;
addition *mae;
Т.е. При использовании такого вида структуры, я могу создать N-ое кол-во строк динамически с помощью оператора New.
C++
1
2
int MK=5;
    ma=new addition[MK];
Но вот кол-во членов не может быть динамическим на сколько я знаю, т.е. нельзя в структуре написать: m[n][j]
Где заранее будет проинициализированна глобальная переменная типа int, а перед определением самой структуры, я бы написал что например n = 10, j = 30...
Ещё интересует вопрос с разнородными переменными, например я вот захочу чтоб в структуре было char[], int, float, WORD типы переменных... Посоветовали юзать тип VARIANT, однако как его юзать, если кол-во бит выделенное для каждого типа переменных - будет различаться...
В общем нужен простой подход(в синтаксисе) к данному вопросу.
И повторюсь - классы и векторы не предлагать, они слишком сложны в синтаксисе.(переубеждать меня не надо, данная тема не для этого создана).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2014, 14:05
Ответы с готовыми решениями:

Сортировка массивов разного типа
Само задание: Массив данных заполняется случайным образом. Рассмотреть массивы данных из элементов типа char и double. Использовать...

Создание массива массивов разного типа переменных
Здравствуйте! Я новичок в скриптинге (C#), по этому возможно спрошу глупость, так как гугл не дал мне ответа. Задача: создать массив...

Программирование задач с использованием комбинированного типа данных или структур
Написать программу данных задач используя комбинированный тип: Абитуриенты сдают пробные экзамены и получают сумму очков до 100....

47
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.03.2014, 00:22  [ТС]
DrOffset, список сложен в синтаксисе(покрайней мере из того что я видел, очень много сторонних разделительных символов). Удаляться тоже будут. Но это же не проблема в случае с массивом структур. Да ссылочку пожалуйста, я так понимаю устав форума не разрешает публично выкладывать ссылки с сторонних сайтов, поэтому в приват если можно. Ну а для зрелищности можете закопипастить кусочек интересующего кода =)
Да и раз вы тут новенький(в смысле в моём топике), поясню, что в результате мне нужен полноценный контейнер с хранилищем разнородной информации. Если список даст мне возможность реализовать - то может и попробую, но опять же тут будет соотношение сложность синтаксиса\исполняемость конечной задачи.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
01.03.2014, 02:13
Цитата Сообщение от Izual Посмотреть сообщение
список сложен в синтаксисе
Сложность понятие относительное, реализация в массиве удаления из середины (особенно, если требуется сразу же освобождать память из под элемента) сложнее, чем аналогичная у списка.

Цитата Сообщение от Izual Посмотреть сообщение
в результате мне нужен полноценный контейнер с хранилищем разнородной информации
Это вы сами напишете, на основе массива, или списка - это вам решать. Или может быть вас все-таки кто-то уговорит на использование готового (напр. того же VARIANT в списке или массиве). Я подскажу - VARIANT использует union для организации совместного хранения разнородных данных.

Цитата Сообщение от Izual Посмотреть сообщение
соотношение сложность синтаксиса\исполняемость конечной задачи.
Задача, как я понял, у вас изначально непростая. Следовательно решать ее простыми способами можно и нужно, но главное - чтобы не примитивными. И выбор структуры данных это не тот уровень сложности, которого стоит опасаться. Будут у вас гораздо более трудоемкие моменты.

Как говорится, дорогу осилит идущий.
Код с примером использования во вложении.
Вложения
Тип файла: 7z c_list_test.7z (1.9 Кб, 35 просмотров)
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.03.2014, 03:26  [ТС]
DrOffset, спасибочки, заценю.

реализация в массиве удаления из середины
Очень просто, алгоритмы - моя страсть. Обожаю такие задачки, а для удобства уже универсальную функцию себе сделал.(естественно с освобождением памяти, хотя пока что утечку памяти не контролю, хотя надо бы начать, а то уже было, нечаянно даже из за этого дюпнул шмотку на офф серве diablo2^^)
VARIANT использует union
Да да, вот почему и возник на 4 странице вопрос о битах, т.к. в книге совместно с union ещё были примеры с unsigned, типа можно тип менять. Хотя написано что массив символов нельзя использовать, потому что unsigned поле не имеет "определённого адреса"... Не очень понимаю))
И да, меня убеждать использовать VARIANT не надо, я как бы к этому и иду, только вот на "чистом" Си не нашёл примеров... все как на подбор только через омг синтаксис классов и векторов. Вот от поиска и недостатка инфы конешно крыша едет... хочется бросить всё, но разум говорит что не надо, ибо идея стоящяя.(хотя вот почему и подумал о простом массиве символов - потому как из него конвертировать можно во что угодно, алгоритмы в принципе просты, да и есть даже некоторые стандартные функции)
решать ее простыми способами можно и нужно, но главное - чтобы не примитивными
А в чём разница? Примитив это как два колеса, но только их отношение даёт результат.
выбор структуры данных
А в этом вся загвоздка, мне нужно предельно понятный синтаксис, чего например классы и вектор не дают, поэтому именно это как бы и основа, т.к. дом начинается с фундамента - не так положу и потом буду мучаться)

Добавлено через 15 минут
Так ну, вот списки... посмотрел, очень не удобно и не понятно! Сам по себе синтаксис списков - требует знания работы со списками. В структурах и массивах такого нет. Так же замечу, постоянно встречающийся символ '->' стрелочки: не очень хороший вариант, я всё же делаю подобие лего - где все детали ясны и понятны.
Кстати по поводу "примитива" вспомнился фильм 2008 года "Проблеск гениальности", где мужик изобрёл из простейших составляющих: резитор, транзистор и конденсатор. Т.е. только базовыми приборами человек создал то, чего ещё не было - в контексте фильма: прерывистые дворники.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
01.03.2014, 14:39
Цитата Сообщение от DrOffset Посмотреть сообщение
Сложность понятие относительное
Izual хочет пойти по самому долгому и ухабистому пути - вместо того, чтобы полчаса посидеть и разобраться с уже реализованным и отлаженным другими, он хочет городить свои велосипеды со своим зоопарком багов. Даже про списки говорит, что слишком сложно.

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Как говорится, дорогу осилит идущий.
Идущий по этой дороге, а не пробивающий новую рядом по болоту.



Цитата Сообщение от Izual Посмотреть сообщение
А в чём разница?
Примитив - это набор инструментов и материал для создания колеса. Зачем создавать новые колёса, если уже имеются в наличии все нужные?

Не по теме:


Цитата Сообщение от Izual Посмотреть сообщение
Очень просто, алгоритмы - моя страсть.
Цитата Сообщение от Izual Посмотреть сообщение
Добавлено через 15 минут
Цитата Сообщение от Izual Посмотреть сообщение
списки... посмотрел, очень не удобно и не понятно!
:jokingly:



Цитата Сообщение от Izual Посмотреть сообщение
Сам по себе синтаксис списков - требует знания работы со списками. В структурах и массивах такого нет.
Синтаксис структур и массивов не требует знания работы со структурами и массивами?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
01.03.2014, 15:15
Цитата Сообщение от Izual Посмотреть сообщение
посмотрел, очень не удобно и не понятно!
Это страх говорит в вас
Код мог бы быть проще, будь он написан с использованием так не любимых вами классов, но это не важно.
Потому что выигрывая в простоте в одном месте, мы получаем увеличение сложности в другом. Вот даже тот пример, я отказался от классов, отказался от С++ как от более продвинутого инструмента описания задачи. Увеличилась ли сложность? Конечно. Ведь теперь очень много вещей, которые в С++ решались на уровне языка автоматически, приходится делать вручную. Однако появилась и простота, простота управления структурой данных, теперь можно управлять ей на самом элементарном уровне, как мне угодно. Вот вам статья на эту тему.

Цитата Сообщение от Izual Посмотреть сообщение
постоянно встречающийся символ '->' стрелочки: не очень хороший вариант
Рулить динамическим массивом и элементами в нем без нее тоже не получится. Один из базовых механизмов роботы с памятью в С и С++ - это указатель, заметьте, базовых, то есть - это и есть как раз тот транзистор, про который вы говорили.

PS. Давайте не забывать, что компьютеры, построенные в прошлом веке, занимали целые комнаты или даже этажи. А теперь я могу положить его в карман. Все потому, что иногда возрастающая сложность задачи не позволяет решить ее на прежней элементной базе и требует изменения взглядов и подходов к задаче. Я надеюсь вы найдете в себе силы это понять.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.03.2014, 16:00  [ТС]
elivin, идите троллить в другое место. Если вы чего то не понимаете, это не значит что оно не правильно, это может так же означать что вы недоразвиты. А что бы понятнее фраза была, вот вам лично ещё: "Возраст ещё не говорит о наличии мудрости".

DrOffset, дело не в страхе, я же сказал нужно как можно проще.
Я уже создал программу типа базы данных, год делал и до сих пор улучшаю. До сих пор не пользовался никакими стрелочками... Отсюда вполне логичный вопрос о том что их можно избежать.
не любимых вами классов, но это не важно.
Концепция - нужно читабиельность кода свести к минимуму, потому это важно, потому что они усложняют понимание. Уже писал 100 раз...
Статейку гляну, такие вещи как раз таки требуются(хотя до уровня ассеблера доходить не желаю).
Один из базовых механизмов роботы
Возможно его можно избежать, как в прочем я с ним не сталкивался пока программу делал.
изменения взглядов и подходов к задаче
В том то и дело, что нагромождать новомодными фичами я не собираюсь программы. Взгляды надо менять на то что было в старом Си и как это использовать по новому.
Слышали наверно про "запланированное устраревание"? - именно поэтому не хочу идти "в ногу со временем", т.к. если идти - создаёш временное, а не вечное.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
01.03.2014, 16:51
Цитата Сообщение от Izual Посмотреть сообщение
Слышали наверно про "запланированное устраревание"?
Вопрос в том, хватит ли у вас квалификации отличить запланированное устаревание от естественного.
В общем вам надо читать, читать и еще раз читать про то, как пишутся программы. Зайдет в тупик иначе проект ваш.

PS. Больше тут писать не буду. Можно вернуться к этому вопросу через год, когда можно будет оценивать пройденный путь и вопросы с которыми вы столкнулись в разработке. Вот тогда это будет интересный разговор.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.03.2014, 21:20  [ТС]
DrOffset, естественное не каснётся базовых алгоритмических операций и вызовов объектов. Именно это стоит верхом того что может быть с минимальной вероятностью быть исключено(изменено).

В принципе теперь тема осталась только с размещением разнородного типа данных, например VARIANT, но с использованием минимально энергоёмких символьных операций(за исключением ест. стандартных, типа логических и т.д.).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.03.2014, 21:20

Используя перегрузку функций определить максимальные значения элементов массивов разного типа
Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа.

Ввод в строку данных разного типа
Скажите, пожалуйста как ввести такие данные: Иван 5 7 3 3 4 9 Алексей 3 1 2 3 чтобы сразу ввести имя, потом число из первой...

Хранение в массиве данных разного типа
Доброго времени суток. Возникла задача: Имеем массив byte buffer, а также переменные char ch1,ch2; int x1,x2,y1,y2; Нужно записать в...

Сохранение данных разного типа в один файл
Добрый день. Прошу помощи с сохранением данных программы. У меня есть один image и 3 таблицы StringGrid. В общем,нужно,чтобы программа...

две базы данных разного типа на хостинге
на хостинге есть сайт на aspx, работает с базой данных Mysql 5.0 хочу аккуратненько залить туда свой маленький модуль, взаимодействующий...


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

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru