Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?

10.08.2019, 23:35. Показов 10586. Ответов 119

Студворк — интернет-сервис помощи студентам
Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться bool, с 10 по 14 будет храниться int. Я видел пример со структурами как раз на этом форуме, но я потерял ссылку на сайт? Можно ли создать такой массив и какими способами?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2019, 23:35
Ответы с готовыми решениями:

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

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

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

119
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.08.2019, 15:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от WxMaper Посмотреть сообщение
Т.е. вы утверждаете, что MyStruct a[100]; - это не инициализация массива?
Не путайте инстанцирование и инициализацию. Я не писал о инициализации. Есть подозрение, что вы лучше себя чувствует с Java потому как не видите границу между типом и значением.
Цитата Сообщение от WxMaper Посмотреть сообщение
вашу писанину можно было даже не читать
Я об этом и просил. Вам - бестолку.
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
13.08.2019, 15:31
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не путайте инстанцирование и инициализацию. Я не писал о инициализации.
А я не писал о инстанцировании. Вы тему то не переводите.
Вы написали довольно однозначно: «Массива нет» и я задал вам однозначный вопрос: «MyStruct a[100]; - это не массив?». Я ничего не путаю, это у вас каша в голове. Где ваш ответ на этот вопрос? Зачем вы тему переводите?

Цитата Сообщение от IGPIGP Посмотреть сообщение
Есть подозрение, что вы лучше себя чувствует с Java
Снова внушение практикуете?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.08.2019, 15:59
Справедливости ради: Вы не так задали вопрос. Не
Цитата Сообщение от WxMaper Посмотреть сообщение
я задал вам однозначный вопрос: «MyStruct a[100]; - это не массив?»
А
Цитата Сообщение от WxMaper
MyStruct a[100]; - это не инициализация массива?
Цитата Сообщение от WxMaper Посмотреть сообщение
Я ничего не путаю
Увы, путаете... Выражайтесь точнее...
2
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
13.08.2019, 16:06  [ТС]
Ребята советов уже много я посмотрю и подумаю что с этим всем делать, так что за всё спасибо буду разбираться.
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
13.08.2019, 16:47
Увы, путаете... Выражайтесь точнее...
Вы правы. Но это не отменяет того факта, что массив есть, хоть он и объявлен без инициализации.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.08.2019, 18:08
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ребята советов уже много я посмотрю и подумаю что с этим всем делать, так что за всё спасибо буду разбираться.
Nexi99, вот это:
Цитата Сообщение от Nexi99 Посмотреть сообщение
я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться bool, с 10 по 14 будет храниться int.
Это описание структуры по способу размещения:
{int, int, int, int, int, double, doudle, double, double, double}
Размеры int и double , обычно, различны. Но даже если бы и совпадали, то была бы проблема в доступе (естественном для массива). Это потому что не существует способа перегрузить оператор индексирования так, чтобы он возвращал по 5-ти первых индексов первые пять элементов типа int, а по пяти следующих - пять элементов как double. А если бы была (страшный сон) то нет синтаксиса использования. В правой части такого вызова - оператор[], а что в левой части выражения присвоения?
C++
1
What_type a = array_int_or_double[i];// нельзя сделать тип What_type  зависимым от значения индекса (адреса от начала)
Правильнее (быстрее и проще) всего захардкодить это как структуру. Минусом будет не расширяемость. Плюсом - скорость и независимость типов. Независимость в том, что вы сможете распределить константность и возвращать ссылки или значения на члены так как пожелаете. Но доступ через точку а не через скобки. В этом смысле ваш вопрос не совместим по использованным понятиям. А если элементами сделать структуры, это уже совсем другой вопрос.
А разговоры, подобные тому, что вы увидели, - обычное дело. Упрямство - попутчик тупости.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
14.08.2019, 22:22  [ТС]
Ребята спасибо за советы я посмотрю и проработаю наилучший для меня вариант?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
14.08.2019, 22:24
Цитата Сообщение от Nexi99 Посмотреть сообщение
я посмотрю и проработаю наилучший для меня вариант?
Это ты у нас разрешения спрашиваешь?
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.08.2019, 00:34
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ребята спасибо за советы я посмотрю и проработаю наилучший для меня вариант?
Nexi99, я уж не знаю как выразить желание увидеть переформулированный вопрос. Создать разнотипный массив невозможно, но для хранения разнотипных данных есть множество вариантов.
Хранение чисел с плавающей точкой и целых в одинаковых по размеру объёмах это перерасход. Но ещё хуже дела обстоят с логическим типом, он ещё сильнее зависит от реализации. Для СС (MVS), например, был размер равный int, а потом( с версии старше 4. ..., - не помню какой) стал - байт. Это не радостно, кстати, с моей точки зрения. Экономия памяти за счёт скорости сегодня, это не путь к победе. Ради скорости приходится умножать ядра (частота имеет предел соотношения стоимости и затрат)... А память можно наращивать экстенсивно. Но не будем о грустном. Хотелось бы узнать о какой задаче шла речь.
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
15.08.2019, 09:56
Цитата Сообщение от IGPIGP Посмотреть сообщение
Хотелось бы узнать о какой задаче шла речь.
Этот вопрос задавался несколькими субъектами в начале этой темы. Однако, ответ на него со стороны Nexi99 так и не был получен.
Там какие - то секретные разработки проходят.

Добавлено через 1 минуту
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ребята спасибо за советы я посмотрю и проработаю наилучший для меня вариант?
Как пожелаешь. Я тебе не могу запретить это.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.08.2019, 10:08
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Там какие - то секретные разработки проходят.
Хорошие разработки всегда содержат интригу, но, скорее всего тут не это главное. Просто, формулировка получилась неудачной, а удачная, может сильно отличаться от той, что получилась. В итоге, - тишина. А может ТС устал от звуков битвы. Посмотрим. Сам по себе вопрос может быть и уровня построения AST на "полиморфных" указателях. То есть, достаточно сложным может быть.
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
15.08.2019, 10:14
Цитата Сообщение от IGPIGP Посмотреть сообщение
Просто, формулировка получилась неудачной
Судя по другим вопросам ТС, пишет он вовсе не на С++, а на Си-подобном MQL4.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.08.2019, 10:53
Цитата Сообщение от WxMaper Посмотреть сообщение
Судя по другим вопросам ТС, пишет он вовсе не на С++, а на Си-подобном MQL4.
К сожалению, не имею представления об этом языке. Сам вопрос интересен.
WxMaper, там где я говорил, что массива нет, я имел ввиду, что каждый массив определяется типом элемента и их количеством. То есть массив целых из 5 штук есть, массив MyStruct из ста штук есть. Но нет массива, вообще.
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
#include<iostream>
 
using namespace std;
 
struct def_struct
{
    int a;
    def_struct(int a_ = 123)
        :a(a_)
    {}
};
 
def_struct def_initiated[10]; //это - 
//1 определение типа def_initiated[10] - тип размером 10*sizeof(def_initiated), поддерживающий def_initiated& operator[](size_t) и пр.
//2 создание объекта опрделенного типа ( def_initiated[10] см. п.1 выше  )
//3 инициализация по умолчанию - созданного объекта посредством инициализации по умолчанию его элементов 
// последнее происходит для всех глобальных определений
int main()
{
    for(const auto & a : def_initiated)
    cout << a.a <<  ' ' ;
    
    return 0;
}
как-то так это можно проиллюстрировать. То есть при объявлении int a; тип уже известен компилятору и происходит создание и инициализация (if any), а при объявлении int a[3], int b[4]; создаются два типа int[3] и int[4], а создание и инициализация - потом. То есть, сначала нужно как бы инстанциировать щаблон похожий на template<size_t, typename ElemType> Built_in_C_array.
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
15.08.2019, 11:04
Ради святого Страуструпа, я уже не хочу снова это обсуждать.
Вдаваться в такие тонкости - это хорошо, но только не в рамках данного форума и раздела
Я вас услышал и понял вашу точку зрения.
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
15.08.2019, 11:12
Цитата Сообщение от IGPIGP Посмотреть сообщение
К сожалению, не имею представления об этом языке
Я тоже не имею представления.

Про этот код что скажите https://www.cyberforum.ru/post13765957.html (внизу поста)?
Выделили блок памяти (условно без привязки к типу) и заполнили данными, которые обличаются типами только на время заполнения и считывания. А всё остальное время блок памяти обезличен в отношении типа.
В случае заполнения массива / контейнера экземплярами std::any, std::optional и прочими обёртками или задействование union -> Один или разный тип имеют элементы массива / контейнера зависит от того, какой субъект это обдумывает: IGPIGP или WxMaper или Croessmah или any, у каждого своя правда. Консенсуса пока не достигли?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
15.08.2019, 12:23
Цитата Сообщение от IGPIGP Посмотреть сообщение
def_struct def_initiated[10]; //это -
//1 определение типа def_initiated[10] - тип размером 10*sizeof(def_initiated), поддерживающий def_initiated& operator[](size_t)
Бред.
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
15.08.2019, 12:24
Я причесал свой код.
Кликните здесь для просмотра всего текста

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <vector>
 
template <typename T, size_t N>
size_t count_arr(T(&arr)[N])
{
    return sizeof(arr) / sizeof(arr[0]);
}
 
template <typename T, size_t N>
size_t size_element_arr(T(&arr)[N])
{
    return sizeof(std::remove_reference<decltype(*arr)>::type);
}
 
template <typename T>
void push(void* &ptr_void, T value)
{
    T* ptr_type = static_cast<T*>(ptr_void);
    *ptr_type = value;
    ptr_void = static_cast<void*>(ptr_type + 1);
}
 
template <typename T>
void read(void* &ptr_void, T& value)
{
    T* ptr_type = static_cast<T*>(ptr_void);
    value = *ptr_type;
    ptr_void = static_cast<void*>(ptr_type + 1);
}
 
int main()
{
    double d[]{ 1.5, 45.28, 316, -20.4 };
    char c[]{ 'a', 'u', 't', 'o'};
    int i[]{ 25, 14};
    bool b[]{ true, false, false, true, true, true };
    std::pair<size_t, char> p[]{ { 1, 'a' }, { 2, 'b' }, { 3, 'c' } };
 
    size_t count_bytes =
        size_element_arr(d) * count_arr(d) +
        size_element_arr(c) * count_arr(c) +
        size_element_arr(i) * count_arr(i) +
        size_element_arr(b) * count_arr(b) +
        size_element_arr(p) * count_arr(p);
    std::cout << "count_bytes = " << count_bytes << "\n";
    void* arr = calloc(1, count_bytes);
    void* arr2 = arr;
    void* arr3 = arr;
    void* arr4 = arr;
    for (auto& value : d)
        push(arr2, value);
    for (auto& value : c)
        push(arr2, value);
    for (auto& value : i)
        push(arr2, value);
    for (auto& value : b)
        push(arr2, value);
    for (auto& value : p)
        push(arr2, value);
    std::cout << "\n";
    for (size_t idx = 0u; idx < count_bytes; ++idx)
    {
        char value;
        read(arr4, value);
        std::cout << static_cast<short>(value) << " ";
    }
    std::cout << "\n";
    std::cout << "\n";
    for (size_t idx = 0u; idx < count_arr(d); ++idx)
    {
        double value;
        read(arr3, value);
        std::cout << value << "\n";
    }
    for (size_t idx = 0u; idx < count_arr(c); ++idx)
    {
        char value;
        read(arr3, value);
        std::cout << value << "\n";
    }
    for (size_t idx = 0u; idx < count_arr(i); ++idx)
    {
        int value;
        read(arr3, value);
        std::cout << value << "\n";
    }
    for (size_t idx = 0u; idx < count_arr(b); ++idx)
    {
        bool value;
        read(arr3, value);
        std::cout << std::boolalpha << value << "\n";
    }
    for (size_t idx = 0u; idx < count_arr(p); ++idx)
    {
        std::pair<size_t, char> value;
        read(arr3, value);
        std::cout << value.first << " " << value.second << "\n";
    }
    free(arr);
 
    return 0;
}
Миниатюры
Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?  
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.08.2019, 13:34
SomniPhobia, блок сырой памяти это блок сырой памяти. Если абстракции массива, структуры, объединения распылить на атомы и тщательно перемешать, то будет гомогенный байт-коктейль. То есть, сделать то можно, но вопрос был иначе поставлен. Вот почему, интересно в какой задаче возникла потребность. Тогда можно будет уточнить саму потребность.

Добавлено через 5 минут
Цитата Сообщение от rat0r Посмотреть сообщение
Бред.
rat0r, и я рад вас видеть. Может преодолеете бессловесные междометия и скажете вразумительно? То что я описывал это псевдо описание и там есть оговорки:
Цитата Сообщение от IGPIGP Посмотреть сообщение
нужно как бы инстанциировать шаблон похожий на template<size_t, typename ElemType> Built_in_C_array.
Или вы не согдасны с тем, что при объявлении int a[10]; происходит объявление типа (а не только объекта этого типа) отличного от int a[20];
?
О чём тут речь была, читали?

Добавлено через 1 час 1 минуту
Цитата Сообщение от rat0r Посмотреть сообщение
тип размером 10*sizeof(def_initiated)
Тут я опечатался. Вместо имени типа элемента: def_struct имя объекта массива воткнул. Вынул фрагмент из другого кода и копипаст подвёл.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
15.08.2019, 16:18
Цитата Сообщение от IGPIGP Посмотреть сообщение
Или вы не согдасны с тем, что при объявлении int a[10]; происходит объявление типа (а не только объекта этого типа)
А где написано, что происходит такое объявление типа?
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
15.08.2019, 16:47
Цитата Сообщение от rat0r Посмотреть сообщение
А где написано, что происходит такое объявление типа?
Поддерживаю, тоже интересно узнать. В обычных лекциях по С++ такого явно не найти

Можно "визуально" проверить так ли это на самом деле:


Слева компилятор msvc, справа - mingw (демонстративнее).

Мне кажется, это уже больше вопрос внутренней кухни компилятора С++, а не самого языка программирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2019, 16:47

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

Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы
2. Дан прямоугольный массив A. Получить линейный массив B, в котором будут храниться номера тех строк матрицы A, в которых есть равные...

Создать класс, в котором информация будет храниться в хеше.
А подскажите еще, мне нужно создать класс , в котором в хеше будет храниться информация, ее пользователь должен вводить (например, машина,...

Комментарии. Создать модуль, в котором будет храниться процедура создания картинки
Привет всем! помогите с комментариями к программе пожалуйста... Создайте модуль, в котором будет храниться процедура создания...

дан массив целых чисел в котором храниться 20 тысяч элементов
дан массив целых чисел в котором храниться 20 тысяч элементов.Найти в массиве первый минимальный элемент после чего во втором массиве...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru