1 / 1 / 0
Регистрация: 21.09.2016
Сообщений: 14
1

Как написать программу с динамической структурой?

15.01.2017, 16:56. Показов 718. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните, мне неумному, как написать прогу с динамической структурой.

Есть вот такая задача:

Определить пользовательский тип, включающий в себя следующие поля: строка, целое число, указатель на байт, указатель на число с плавающей точкой. Внести изменения в созданный тип, так чтобы объекты этого типа могли образовывать односвязный список. Создать односвязный список из n объектов созданного типа.

Пытался сделать сам, однако не смог найти хорошей теории. Очень хочется разобраться с решением таких задач.
вот собственно всё, что получилось:
C++
1
2
3
4
5
6
7
8
9
10
 
using namespace std;
 
struct B
{
    string st;
    int c;
    char* byte;
    double cs;
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2017, 16:56
Ответы с готовыми решениями:

Написать любую программу со структурой и файлами
Нужно написать любую программу. Задание такое : Написать программу со структурой. Работа с файлами...

Написать программу, работающую со структурой Книга
Задание такое Описать структуру . Заполнить данными массив из 5 элементов . В полученной базе...

на С++ написать программу со структурой и записью в файл
дан файл с внешним именем "A:\Student\INT.DAT. Струкрута записи файла : int kod;char ST;float x;...

Написать программу, выполняющую следующие действия со структурой:
Ребят помогите пожалуйста, не бросайте в беде)) Мне нужно описать структуру с именем SPORT,...

7
899 / 476 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
15.01.2017, 17:29 2
Думаю, нужно что то в этом духе

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
#include <iostream>
 
class Test
{
    std::string str;
    const char *byte;
    double dbl;
    
    static int counter;
    
    public:
        Test *next = nullptr;
        Test(std::string s, const char *b, double d)
        {
            str = s;
            byte = b;
            dbl = d;
            ++counter;
            std::cout << "CREATED " << counter << " OBJECT " << std::endl;
        }
        
        ~Test()
        {
            if (next) {
                delete next;
            }
        }
};
 
int Test::counter = 0;
 
int main()
{
    
    int typeCount = 10;
    Test *t = new Test("hello", "a", 4.21);
    Test *tmp = t;
    
    for (int i = 0;i < typeCount; i++) {
        tmp->next = new Test("world", "b", 5.21);
        tmp = tmp->next;
    }
    
    delete t;
}
http://rextester.com/AZC46143

Добавлено через 1 минуту
Параметры, передаваемые в конструктор, естественно могут быть такими, которые вам нужны.
У меня они повторяются для простоты примера.
0
1 / 1 / 0
Регистрация: 21.09.2016
Сообщений: 14
15.01.2017, 17:39  [ТС] 3
А можно немного объяснить происходящее

Добавлено через 1 минуту
Цитата Сообщение от sys_beginner Посмотреть сообщение
Параметры, передаваемые в конструктор, естественно могут быть такими, которые вам нужны.
У меня они повторяются для простоты примера.
А можно немного объяснить происходящее. В целом код
0
899 / 476 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
15.01.2017, 17:46 4
Palpatin059,
1. Создается класс (правда, без возможности доступа к его полям из вне ) но это решаемо, либо перенести поля в секцию public, либо написать методы-геттеры). Это оставляю вам
2. Класс содержит поля которые вы описали в задачи. Значение полей инициализируются в конструкторе класса при создании объекта
3. Каждый объект содержит указать на следующий объект такого же типа, образуя тем самым список. Каждый элемент списка является полноценным объектом типа Test со своими полями string,char* и double.
4. В main создается один объект Test, а дальше тело цикла выполняется столько раз, сколько объектов в списке нужно
5. Эти объекты инициализируются в теле цикла, в каждой итерации - отдельная инициализация
0
1 / 1 / 0
Регистрация: 21.09.2016
Сообщений: 14
15.01.2017, 17:55  [ТС] 5
Цитата Сообщение от sys_beginner Посмотреть сообщение
Создается класс
а без классов есть возможность написать? А то я с ними пока что не дружу
0
899 / 476 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
15.01.2017, 18:05 6
Цитата Сообщение от Palpatin059 Посмотреть сообщение
а без классов есть возможность написать? А то я с ними пока что не дружу
Если не дружите с классами, то скорее всего вы дружите со структурами )

Просто вместо слова class напишите struct и уберите это public:
0
1 / 1 / 0
Регистрация: 21.09.2016
Сообщений: 14
15.01.2017, 18:29  [ТС] 7
Цитата Сообщение от sys_beginner Посмотреть сообщение
Просто вместо слова class напишите struct и уберите это public:
спасибо за совет

Добавлено через 20 минут
Цитата Сообщение от Palpatin059 Посмотреть сообщение
уберите это public
а что за место него?
0
899 / 476 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
15.01.2017, 18:33 8
Цитата Сообщение от Palpatin059 Посмотреть сообщение
а что за место него?
В классах все методы и поля которые находятся в секции public являются доступными напрямую через переменную, которая ссылается на объект этого класса. В случае структуры таких фич нету, там всё public. А в классах можно делить методы и поля по категориями(областям видимости). public, protected и private
0
15.01.2017, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2017, 18:33
Помогаю со студенческими работами здесь

Написать программу, выполняющую следующие действия со структурой:
Задание 1. Описать структуру с именем WORKER, содержащую следующие поля: фамилия и инициалы...

Проблема с динамической структурой
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; struct Node { int num; ...

Ошибка с динамической структурой
Доброго времени суток, товарищи программисты. Вообщем проблема такова: писал значит программу, в...

Работа со структурой и динамической памятью
Как создать структуру типа typedef с двумерным массивом внутри, что бы потом можно было через...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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