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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
#1

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

18.02.2014, 14:05. Просмотров 2846. Ответов 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, однако как его юзать, если кол-во бит выделенное для каждого типа переменных - будет различаться...
В общем нужен простой подход(в синтаксисе) к данному вопросу.
И повторюсь - классы и векторы не предлагать, они слишком сложны в синтаксисе.(переубеждать меня не надо, данная тема не для этого создана).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 14:05     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Посмотрите здесь:
Сортировка массивов разного типа C++
C++ Программирование задач с использованием комбинированного типа данных или структур
C++ Хранение в массиве данных разного типа
C++ Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
C++ Реализовать сортировку и поиск данных в массиве структур типа School
C++ Реализовать сортировку и поиск данных в массиве структур типа School
C++ Массив шаблонов или как обратиться к элементам разного типа, хранящиеся в одном "списке" по индексу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
18.02.2014, 16:37     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #2
Резюмируя: вы не хотите использовать для решения своих задач средства, которые для них предлагает язык C++.
Рекомендация: сменить язык программирования на тот, который предоставляет приемлемые для вас средства.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
18.02.2014, 17:59     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #3
Izual, а что мешает сделать массив m двумерной ссылкой?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct addition {
    char **m; // Под двумерный динамический массив 
};
 
int main() {
    int n = 10, k = 30, mk = 5;
    addition *ma = new addition[mk]; // mk элементов
    
    for (int i = 0; i < mk; i++) {
        ma[i].m = new char*[n]; // n строк
        for (int j = 0; j < n; j++)
            ma[i].m[j] = new char [k]; // k символов в строке
    }
    /*
    * Тут куча другого кода
    */
    return 0;
}
И зачем "ООП" в заголовке, если предполагается не использовать ООП?

Кстати, без использования классов и векторов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct addition {
    char **m; // Под двумерный динамический массив 
    void init(int n, int k);
};
 
void addition::init(int n, int k) {
    m = new char*[n]; // n строк
    for (int j = 0; j < n; j++)
        m[j] = new char [k]; // k символов в строке
}
 
int main() {
    int n = 10, k = 30, mk = 5;
    addition *ma = new addition[mk]; // mk элементов
    
    for (int i = 0; i < mk; i++)
        ma[i].init(n, k);
    /*
    * Тут куча другого кода
    */
    return 0;
}
Цитата Сообщение от Izual Посмотреть сообщение
классы и векторы не предлагать
Цитата Сообщение от Izual Посмотреть сообщение
данная тема не для этого создана
Может, стоило в раздел языка Си идти?
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
18.02.2014, 18:04  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #4
Цитата Сообщение от Nick Alte Посмотреть сообщение
Резюмируя: вы не хотите использовать для решения своих задач средства, которые для них предлагает язык C++.
Рекомендация: сменить язык программирования на тот, который предоставляет приемлемые для вас средства.
Средств много. У меня лично совершенно иной подход к программированию, если он отличается от вашего - то это не значит что он не правильный. (тоже самое что: "Возраст ещё не говорит о наличии мудрости")
Язык Си предлагает массу вариаций, но синтаксис навороченных классов - через чур сложен для понимания, особенно я замечаю что когда проходит довольно длительное время, а ваша программа устаревает, то начиная опять в ней копаться - классы сильно затрудняют жизнь.
Это лично моё мнение, спорить со мной не надо, и не надо мне предлагать того что мне не надо. Если бы я спросил в теме тот вопрос на который вы дали ответ, то тема бы называлась по другому, а вы спамите, потому что не по делу ответили.
С++ в свою очередь даёт массу возможностей, которые просто надо додумать как реализовать.
У кого то в подписи было изречение, мол "настоящий программист пишет код, который понятен даже школьнику", с чем я полностью согласен.
В Си есть структуры, есть динамическое выделение памяти, есть массивы, есть даже готовая структура типов VARIANT. Так что вы мне тут советуете о смене языка, если всё что надо есть. Не хватает только практических навыков и знаний, чего я и ищу.

Добавлено через 3 минуты
Цитата Сообщение от elivin Посмотреть сообщение
Izual, а что мешает сделать массив m двумерной ссылкой?
Может, стоило в раздел языка Си идти?
Спасибо большое, пойду разбераться. То что вы мне написали как раз то что нужно, хотя я ещё не доконца въехал в "ссылки"... как они храняться, где, и т.п. подводные камни, ну время есть... всё в переди =)

По поводу раздела "Си", не думаю что он подойдёт, структуры же это уже ООП принципы(а значит ++), а тем более я всё же собираюсь использовать VARIANT, там уж точно будут фичи с классами(хотя они будут идти как добавочное, что мне изучать нет нужды).
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
18.02.2014, 18:19     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #5
Пардон, не ссылки, а указатели, конечно же

Цитата Сообщение от Izual Посмотреть сообщение
структуры же это уже ООП принципы
Структуры в языке Си и в C++ - разные вещи. Первый мой пример запустится и будет работать (если циклы подправить), если его собрать Си'шным компилятором, второй - нет. В языке Си структуры не имеют отношения к ООП.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
18.02.2014, 18:42  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #6
Цитата Сообщение от elivin Посмотреть сообщение
Пардон, не ссылки, а указатели, конечно же


Структуры в языке Си и в C++ - разные вещи. Первый мой пример запустится и будет работать (если циклы подправить), если его собрать Си'шным компилятором, второй - нет. В языке Си структуры не имеют отношения к ООП.
Что ссылки, что указатели для меня пока что тёмный лес.. хотя использую постольку поскольку =)

Хмм, в книге Хабибулина, по которой я изучаю Си\Си++ структуры помещены в раздел ООП, вот я и решил что это уже ООП. Но есть другая сторона медали, в разделе чистого Си маловато народу... Да и я использую всё же операторы New и Delete, которые относятся к С++. Вообще предполагаю что из плюсов я многим чем пользуюсь, тем более что програмлю под WinApi, а там всё же ++ мне кажется =)
Сам принцип ООП, как объектов - для меня несёт немного другой смысл, нежели для большинства(имхо). В принципе даже сам массив - это уже объект, хотя по причине того что в него не помещяется разнородного типа данные - это выходит за рамки объекта, но зато с этой задачей справляется структура.
Кстати, а что по поводу разных типов данных? Я тут в книге увидел пример с использованием unsigned:
C++
1
2
3
4
5
struct phone{
char ab[100];
unsigned home: 1;
unsigned sell: 2;
};
Типа под переменную выделяется определённое кол-во бит... я так понял что это то что мне надо для реализации "разнородного типа данных", которые будут определены только перед заданием самой структуры.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
18.02.2014, 19:27     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #7
Цитата Сообщение от Izual Посмотреть сообщение
структуры помещены в раздел ООП
Значит, это книга по C++. Язык Си вообще с ООП не связан. А вот в C++ между классами и структурами мне известно только одно отличие - параметры доступа и наследования по умолчанию. В классах это private, а в структурах - public. Если указывать их в явном виде, то разницы никакой. (Да, у структур в плюсах тоже есть конструкторы/деструкторы/методы/права доступа)

Цитата Сообщение от Izual Посмотреть сообщение
програмлю под WinApi, а там всё же ++
WinAPI - не часть C++. Его можно использовать и в Си, и в паскале, и мало ли ещё в каких языках.

Цитата Сообщение от 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
struct addition {
    addition();
    void init(int n, int k);
    // Тут другие публичные методы
private:
    char **m;
};
 
addition::addition() {
 
}
 
void addition::init(int n, int k) {
    m = new char*[n]; // n строк
    for (int j = 0; j < n; j++)
        m[j] = new char [k]; // k символов в строке
}
 
int main() {
    int n = 10, k = 30, mk = 5;
    addition *ma = new addition[mk]; // mk элементов
    
    for (int i = 0; i < mk; i++)
        ma[i].init(n, k);
    /*
    * Тут куча другого кода
    */
    return 0;
}
Цитата Сообщение от Izual Посмотреть сообщение
Типа под переменную выделяется определённое кол-во бит
Ага, только я таким не пользуюсь, так что тут особо не помогу.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
18.02.2014, 20:08  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #8
Книга "Профессиональное программирование на языке высокого уровня С/С++".
Кстати раздел в котором находится описание структур, звучит "Расширение языка Си в С++"... Т.е. всё таки плюсы =)
По поводу отличия, синтаксис сложный у классов и векторов, очень много символов которые затрудняют понимание, всякие двойные >> << :: и т.п. а потом всё это вместе друг с другом... Получается просто "херня" =)
Для меня важен синтаксис, потому что я буду строить интерпритатор(если я правильно его назвал) текста, т.е. т.к. в Windows нет встроенного компилятора, мне придётся в программе реализовать алгоритм чтения и приминения блок схем пользовательских функций. Не хотелось бы чтоб там присутствовал сложный синтаксис, тем более что парсить в таком случае файл с кодом, который создаст программа исходя из блок-схемы будет просто очень тяжело. А уж если потом вылезет ошибка, то в создаваемом файле "чёрт голову сломает", всё должно быть просто как автомат АК.(хотя бы потому что я хочу и авто проверку на ошибки сделать и способ устранения ошибок, чтоб всё было автономно по максимуму)

Я понимаю что WinApi это всего лишь библиотека, однако для её полного использования всё же С++ (тем более что я использую ещё и OLEAUTO, для работы с Excel импорт-экспортом, а там используются классы).

Говорю же мой взгляд на ООП иной, я буквально всё воспринимаю.(в этом заслуга вед и буквицы)

Кстати, а вот если я в цикле задания массива захочу чтоб например у меня в 3-ей строке было отличительное кол-во элементом, то ничего страшного в этом не будет?... Например так:
C++
1
2
3
4
5
6
7
for (int j = 0; j < n; j++)
{
 if(j!=2)
  ma[i].m[j] = new char [k]; // k символов в строке
 else
  ma[i].m[j] = new char [dk]; // dk символов в строке
}
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
18.02.2014, 20:35     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #9
Цитата Сообщение от Izual Посмотреть сообщение
всякие двойные >> << :: и т.п.
>> и << - это побитовый сдвиг на самом деле. Просто в std::cin и std::cout они перегружены.
Цитата Сообщение от Izual Посмотреть сообщение
т.к. в Windows нет встроенного компилятора, мне придётся в программе реализовать алгоритм чтения и приминения блок схем пользовательских функций.
Честно говоря, вообще не понял, о чём речь. Может, лучше установить нормальную IDE? Большинство современных IDE предоставляют проверку синтаксиса на лету, составление деревьев классов/функций/переменных/etc и много других плюшек.
Цитата Сообщение от Izual Посмотреть сообщение
(тем более что я использую ещё и OLEAUTO, для работы с Excel импорт-экспортом, а там используются классы)
Подозреваю, что для Си и для C++ просто разная реализация. Просто составлена в соответствии с парадигмами языка.
Цитата Сообщение от Izual Посмотреть сообщение
мой взгляд на ООП иной
Это не меняет самого ООП
Цитата Сообщение от Izual Посмотреть сообщение
то ничего страшного в этом не будет?
Ничего. Только в структуре надо бы хранить размер массива. И для этого лучше воспользоваться методами структуры.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
18.02.2014, 22:13  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #10
Сдвиги.. что то слышал )))) Но речь не именно о этих символах, а вообще о синтаксисе при классовом программировании, там этих символов постоянно пачками, это раздражает. Структуры проще - всего льшб точка - как разделитель.

Не не, IDE это для разработчика, а я хочу чтоб программа в зависимости от нужд пользователей - сама себя либо рекомпилировала(как это можно было бы сделать в Linux, т.к. там встроенный GCC), либо вот я мечтаю(готовлюсь) осуществить через чтение блок схем файлов.

На обычном Си не всё реализованно под Excel и удобства намного меньше. А тем более новые версии экселя выходят, так новые фичи тока под ++ пишутся(и то, OLEAUTO уже забросили, там что то другое мутят)

Взгляд меняет всё! Только с помощью взгляда на вещи мы видим например, что андроид - "куй проссыш" как настроить, а iOS - прост на столько, что 5-и летний ребёнок поймёт.

Размем будет естественно в виде отдельной переменной. Только что то я не понял, что значит "в самой структуре"?...Ну т.е. я понял это как отдельную переменную, но я бы хотел её хранить в другой подобной динамической структуре... Которая будет описывать таблицы на основе той структуры которую мы тут описываем... ололо, называется "сам то понял что сказал")))) Но на самом деле я знаю что я имею ввиду, но "по другому не скажеш" =)

Вот теперь осталась последняя задача, с типами данных. Хотя тут будет немного размытее, т.к. вот у меня динамический массив в структуре уже есть, но он то мне нужен для того чтоб выделять память под разного рода типы... Типа чтоб m[0] было например char(и размер j - был бы задаваемым), m[1] было int.. и т.д.

Кстати суть то хоть того что я хочу сделать понятна?.. И куда может вывести подобная программа всю индустрию обработки баз данных?... Если реализовать как надо - 1С программа будет курить в сторонке.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
19.02.2014, 08:43     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #11
Цитата Сообщение от Izual Посмотреть сообщение
Структуры проще - всего льшб точка - как разделитель.
Как я уже говорил, между структурами и классами в плюсах разница небольшая. Кстати, тут могу отчасти согласиться - сам не люблю некоторые аспекты ООП (точнее, их реализацию в C++). Например, не использую boost и STL из-за конструкций типа
C++
1
namespace1::namespace2::namespace3 template_name<namespase1::namespace4, namespace1::namespace5>
Хотя boost::regex всё-таки стоит освоить - регулярки - хорошая вещь. Кстати, и тебе советую освоить - поиск по регуляркам очень полезен.

Цитата Сообщение от Izual Посмотреть сообщение
программа в зависимости от нужд пользователей - сама себя либо рекомпилировала(как это можно было бы сделать в Linux, т.к. там встроенный GCC), либо вот я мечтаю(готовлюсь) осуществить через чтение блок схем файлов.
Пиши просто интерпретатор. Про "блок-схемы файлов" всё равно не понял. Кстати, можешь пообщаться с автором этой темы.

Не по теме:

Компилятор, встроенный в Linux, называется сс, а gcc устанавливается отдельно. К тому же это компилятор языка Си, а не плюсов


Цитата Сообщение от Izual Посмотреть сообщение
На обычном Си не всё реализованно под Excel и удобства намного меньше.
А разве работа с Excel включена в состав WinAPI? Я не работаю с WinAPI. Собственно, и для винды не так уж часто что-нибудь собираю.

Не по теме:

Цитата Сообщение от Izual Посмотреть сообщение
андроид - "куй проссыш" как настроить, а iOS - прост на столько, что 5-и летний ребёнок поймёт.
Субъективно. iOS прост, пока не потребуется что-нибудь перенастроить. Хотя спорить не буду - с iOS мало имел дело.


Цитата Сообщение от Izual Посмотреть сообщение
я не понял, что значит "в самой структуре"?
C++
1
2
3
4
5
struct addition {
    char **m; // Под двумерный динамический массив 
    int k_str; // Количество строк
    int k_symb; // Количество символов в каждой строке
};
Кстати, тут лучше через методы реализовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct addition {
    char **m; // Под двумерный динамический массив 
    int k_str; // Количество строк
    int k_symb; // Количество символов в каждой строке
    void init(int n, int k);
};
 
void addition::init(int n, int k) {
    m = new char*[n]; // n строк
    for (int j = 0; j < n; j++)
        m[j] = new char [k]; // k символов в строке
    k_str = n;
    k_symb = k;
}
(А в идеале - запихать все переменные/указатели в privat) Но, конечно, это нужно только если у массива таких структур будут разные количества символов/строк. В противном случае советую создать ещё одну структуру:
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
struct addition {
    char **m; // Под двумерный динамический массив 
    void init(int n, int k);
};
 
void addition::init(int n, int k) {
    m = new char*[n]; // n строк
    for (int j = 0; j < n; j++)
        m[j] = new char [k]; // k символов в строке
}
 
struct field_varchar {
    int k_str; // Количество строк
    int k_symb; // Количество символов в каждой строке
    addition ad;
    void init(int n, int k);
};
 
void field_varchar::init(int n, int k) {
    k_str = n;
    k_symb = k;
    ad.init(n, k);
}
 
int main() {
    int n, k;
    field_varchar field;
    // Инициализируем n и k, например
    n = 10;
    k = 30;
    // И инициализируем поле таблицы:
    field.init(n, k);
    // Дальше программа. Обращаемся к первой строке так: field.ad.m[0]
    // Количество строк: field.k_str
    // Количество символов в строке: field.k_symb
    return 0;
}
Цитата Сообщение от Izual Посмотреть сообщение
Типа чтоб m[0] было например char(и размер j - был бы задаваемым), m[1] было int.. и т.д.
Могу дать (написать) небольшой пример реализации, использующий наследования, но там ООП во все поля
Цитата Сообщение от Izual Посмотреть сообщение
Кстати суть то хоть того что я хочу сделать понятна?
Насколько я понял, небольшую СУБД.
Цитата Сообщение от Izual Посмотреть сообщение
Если реализовать как надо - 1С программа будет курить в сторонке.
Сила 1С в её поддержке
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
19.02.2014, 09:23  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #12
Вот про реализацию синтаксиса я и говорю, чёрт голову сломает.

Интерпретатор он как ни крути будет... Блок-схемы - это же школьный курс, либо в книгах - это самые азы.(графическое представление хода действия программы с всякими угольниками, кругами, ромбами и т.п. - для понимания, а так же для устранения/выявления ошибок).

По поводу Linuxa уже что то перехотелось вообще сидеть на нём, т.к. говорят куча ошибок там, даже в простых функциях(я говорю о переносимости WinApi кода)... а раз уж без плюсов, то возможно и к лучшему.

Работа с Excel это COM библиотека, не WinApi, я просто сказал как бы в добавок о том что на плюсах оно лучше.

Сам iOS не знаю, но все друзья и знакомые хвалят эти игрушки за именно простоту в настройке, мол там не надо 100500 вкладок чтоб найти нужные настроечные данные... Ну я больше поклонник всего что проверенно временем, так что вообще по барабану, телефон - это телефон... Если уж говорить о удобном компьютере - то мини ноут или планшет...

Не, ООП(как классы) не надо, это меня ещё на год заступорит, или на вечно.

СУБД да, уже научен горьким опытом, когда к БД присоединяеш дополнительную СУБД, пишеш код для сцепки... а потом получается что надо ещё и ещё, а копипаста не сработает, т.к. имена переменных разные, приходится переписывать очень много - не мой стиль, я как в мультике "Я на месте не сижу, щяс пойду и попляшу" =) Не усидчивый и не могу заниматься нудной работой, и из за этого программу не могу доделать должным образом, хотя уже 17к строк... Мне нравится сам творческий процесс - создания алгоритмов... Ну от природы не уйдёш. ("И даже мудрец поступает согласно природе своей, так к чему противленье?" с.Бхагавад Гидта)

Поддержка не знаю уж почему такая большая, наверно потому что это первая программа в классе СУБД, где можно увидеть прям из неё исполняемый код и ошибки.(видел как то пару раз, но это всё равно не достаточно, я хочу с блок схемами, т.к. логика расширится)

Так а теперь по поводу кода. Конешно будет несколько структур, взаимо связанных. Без этого никуда, т.к. приоритет должен быть управляемым с уровней. Возник тут вопросик... А вот как мне реализовать N-ое(динамическое) кол-во экземпляров структуры? Т.е. например низший уровень, структура - которая в себе держит данные для формы колонок\столбцов. И мне например надо будет не одну или две, а 5-6 экземпляров(т.е. разные названия, в моём примере были экземпляры 'ma' и 'mar', а две как минимум - для того чтобы хотябы одну можно было дописывать\изменять в процессе работы), но только не статически им названия давать, а опять же динамически.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
19.02.2014, 11:03     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #13
Цитата Сообщение от Izual Посмотреть сообщение
Вот про реализацию синтаксиса я и говорю, чёрт голову сломает.
Это всё из-за namespace'ов.

Цитата Сообщение от Izual Посмотреть сообщение
Блок-схемы - это же школьный курс, либо в книгах - это самые азы
Я знаю, что такое блок-схемы. Вопрос в другом. Во-первых, это именно графическое представление кода, то есть проще хранить сам код в виде кода, а блок-схемы изображениями/диаграммами. Собираешься таскать с программой блок-схемы, их распознавать, по ним генерировать код, парсить его на ошибки, потом этот код собирать? Уж проще исходники с собой сразу таскать. Во-вторых, говоришь, подстраиваться под пользователя будет таким образом. Как? Пользователь сам будет блок-схемы править? В-третьих, блок-схемы на уровне (утрирую, конечно) (начало)->(ввести пременные a и b)->(c := a + b)->(вывести c)->(конец) используют разве что школьники. Схемы используются на более высоком уровне (взаимодействие функций/модулей/классов). Так что мне не понятно, что именно ты хочешь сделать.

Цитата Сообщение от Izual Посмотреть сообщение
говорят куча ошибок там, даже в простых функциях(я говорю о переносимости WinApi кода)
Вот не поверишь, в винде ошибок в реализации POSIX не меньше. А всё почему? А потому, что WinAPI - интерфейс для работы с виндой (и только с ней), а POSIX - интерфейс для работы с *nix-like системами. То есть в win нет реализации POSIX, а в Linux нет реализации WinAPI.

Цитата Сообщение от Izual Посмотреть сообщение
а раз уж без плюсов
Это cc - компилятор именно языка Си. gcc поддерживает куда больше языков.

Цитата Сообщение от Izual Посмотреть сообщение
Не, ООП(как классы) не надо, это меня ещё на год заступорит, или на вечно.
Это не такая сложная тема, как кажется на первый взгляд (я про классы, а не про ООП в целом)

Цитата Сообщение от Izual Посмотреть сообщение
к БД присоединяеш дополнительную СУБД
Это как?

Цитата Сообщение от Izual Посмотреть сообщение
Поддержка не знаю уж почему такая большая
Поддержка осуществляется разработчиками. 1С - это больше, чем СУБД.

Цитата Сообщение от Izual Посмотреть сообщение
не статически им названия давать, а опять же динамически
В C++ (как и в других транслируемых языках) имена переменных существуют только в исходном коде (ну, и в объектном, наверное, в конечном бинарнике точно их нет). Динамически - значит во время выполнения программы. На этом этапе никаких имён переменных уже нет. А вообще, юзай динамические массивы.

Цитата Сообщение от Izual Посмотреть сообщение
уже 17к строк
Советую заняться рефакторингом
Dmitriy_M
19.02.2014, 18:10
  #14

Не по теме:


Цитата Сообщение от Izual Посмотреть сообщение
как это можно было бы сделать в Linux, т.к. там встроенный GCC
GCC не встроен в Linux. Пример Android.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 18:26     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Еще ссылки по теме:
C++ Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
C++ Builder Нужен совет по созданию своего типа данных
Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа C++
C++ Присвоение переменных разного типа
Определения знака переменных разного типа C++

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

Или воспользуйтесь поиском по форуму:
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
19.02.2014, 18:26  [ТС]     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур #15
namespace, ну да, что то слышал =) постольку поскольку иногда пользуюсь, но вроде 100500 символов он не требует, покрайней мере в той копипасте, которую я скопировал в свой код))

Есть тут у одного старичка на форуме подписка, мол(примерно) "хороший код может написать любой програмист, но написать код понятный обычным людям может только профессионал"... здесь самое главное слово - "Простота"! - и это залог всего, так же как я веды изучаю, да есть лекторы несущие такой объём знаний, что можно мир завоевать, но понять и принять эти знания в себя, когда они разсказываются стилем попа, без чувств, без интонации, без пауз на "весёлые" примеры и т.п. - их никто не примет, кроме "задротов". Это как в школе, бывают такие люди - они тупо заучивают учебник, а толку? Я всегда следовал принципу - найди самое важное (например формулу), пойми суть и используй. Ведь в программировании как в геометрии... преобладает логика, эти "допустим" и "если"... И это в конечном итоге определяет достигнеш ли ты цели или нет, и хватит ли терпения, ведь заучить книги по математике не так уж и трудно, там книга на год, а у нас в нашем не лёгком деле - так всё быстро мчиться что подобным способом можно заучивать 100500 книг, но только что же останется в памяти? иии а как же творческий процесс?... Блок схема - помогает для восприятия алгоритмов, если её продумать, то это как brakepoints, по которым даже можно смотреть результат на определённом выполнении этапа. Тем более что если данное будет - то даже недо программисты(бугалтера и другой шлак) могут справляться с исправлением алгоритмических ошибок.

POSIX - слышал что то, но не сталкивался, так что тёмный лес. А вообще, ну как LINUX может не поддерживать код WinApi... ну это честно говоря бредово, винда это же придаток линхи как ни крути. Да и WINE там есть... в общем фиг с этой линухой.

Поддерживает и хорошо, но не о том речь.(но спасибо за инфу, может пригодится)

Сложная в синтаксисе. Мне этого хватает. Как только книгу переварачиваеш за поовину начинется бред сивой кабылы с таким кол-вом соединительных символов... опять же простота залог всего.

Есть основная база данных, которая читается из одного файла, и есть ещё с десяток дополнительных файлов, откуда читается ещё, при этом эти придатки должны загрузиться правильно, т.е. если основная база данных была изменена, то придаток должен эти ньюансы проработать и измениться ровно так же, чтоб стыковка прошла успешно.(вся эта конитель потому что и так база огромная, а если все придатки грузить сразу то будет овер мемори - говорю же уже 17 000 строк кода накатал, ну и постольку поскольку - но работает, хотя меня не хватает одного, и уже за**** переписывать один и тот же алгоритм стыковки с разницей в стыковочных узлах - а это самое мерзкое, потому что в 100 строках кода надо изменять названия переменных, а ещё иногда что то другое дополнять, а это уже сложно, потому что алгоритм не гибкий получается, хрен знает когда ты его писал, а теперь не понятно что есть что, для этого и нужна графическая блок схема, для того чтобы править код прям в ней, это как графическая IDE)

Дело в том что 1С прост, те кто работают у них на выездах - это в основном недо программисты, которые придумать сами не умеют, у них есть дорога по которой овцы ходят...

Я по поводу например сделать ma[N], int N - определить как кол-во загруженных "таблиц", и в последствии иметь возможность изменять это N. Например вот при подгрузке придатка как я объяснил выше. (я просто не знаю можно так или нет, ни в книге ни в гугле не видел, да и ключевое слово для поиска наверно не правильно подобрал, т.к. не знаю как это называется)

Рефакторинг был, уже 3 раза. Но 17к всё равно остаётся, я тупо делаю огромную базу данных(в одиночку ~ ~), ну суть не в этом, а в том что всё что есть - необходимо, я уже и в функции всё вывел, и алгоритмы укорачивал, но при 10 стыковочных доп. баз данных к основной, где разные связующие звенья - единую функцию для стыковки не напишеш. Остался теперь последний рефакторинговый этап - разбить один файл с 17к строк на несколько файлов, но т.к. я сразу не думал что столько получится - я использовал не очень переносимые алгоритмы, зависящие от некоторых деталей... ладно это я на закуску себе оставлю, тем более что я уже к 3 рефакторингу вывел много чего в функции с возвращяемыми значениями, осталось доделать и уже потом можно разъединять файл...
Yandex
Объявления
19.02.2014, 18:26     Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru