Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951

Стек с объектами

10.06.2012, 12:49. Показов 4876. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, у меня есть базовый класс и три дочерних класса. Нужно чтобы объекты доччерних хранились в стеках. Вобщем должно быть три стека=/ но неясно как поместить туда объекты классов....
Класс стек я написала, а что дальше делать не знаю..Естьь пример выполнения программы с матрицей...но понять все-равно не могу..
Помогите кто чем может..
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{      }
 
//----Базовый класс "Осветительные приборы"----//
class osv_prib
{
public:
       virtual void print(TMemo* M)const = 0;
       osv_prib():cena(0),imya("nope"),CCBETA(0){};
       osv_prib( double cena1 ,AnsiString imya1,double CCBETA1):
       cena(cena1),imya(imya1),CCBETA(CCBETA1){};
protected:
       double cena;//цена
       AnsiString imya;//имя
       double   CCBETA;//сила света
};
 
 
 
 //---- класс "Светильники"----//
class svetilniki: public osv_prib
{public:
        svetilniki():dalnost(0){};
        svetilniki(double cena1 ,AnsiString imya1,double   CCBETA1, double dalnost1):
        osv_prib(cena1,imya1, CCBETA1),dalnost(dalnost1){};
        virtual void print (TMemo* M) const;
        svetilniki& operator= (const svetilniki &a);
protected:
        double dalnost;//Дальность освещения
};
void svetilniki :: print(TMemo* M) const{
M->Lines->Add("Светильники:");
M->Lines->Add("Цена: "+FloatToStr(cena));
M->Lines->Add("Имя: "+imya);
M->Lines->Add("Сила света: "+FloatToStr(CCBETA));
M->Lines->Add("Дальность: "+FloatToStr(dalnost));
}
svetilniki& svetilniki::operator=(const svetilniki &a){
cena = a.cena;
imya = a.imya;
CCBETA = a.CCBETA;
dalnost = a.dalnost;
return (*this);
}
 
 
 
 //----класс"Прожекторы"----//
class proj: public osv_prib {
public:
        proj():ploshad(0){};
        proj(double cena1 ,AnsiString imya1,double   CCBETA1, int ploshad1):
        osv_prib(cena1,imya1,CCBETA1),ploshad(ploshad1){};
        virtual void print(TMemo* M) const;
        proj& operator= (const proj &a);
protected:
        int ploshad; //площадь освещения
};
void proj::print(TMemo* M) const{
        M->Lines->Add("Прожекторы:");
        M->Lines->Add("Цена: "+FloatToStr(cena));
        M->Lines->Add("Имя: "+imya);
        M->Lines->Add("Сила света: "+FloatToStr(CCBETA));
        M->Lines->Add("Площадь освещения: "+IntToStr(ploshad));
}
proj& proj::operator=(const proj &a){
        cena = a.cena;
        imya = a.imya;
        CCBETA = a.CCBETA;
        ploshad = a.ploshad;
return (*this);
}
 
 
 
 
 //----класс "Ночники"----//
class nochniki: public svetilniki{
public:
        nochniki():vid(""){};
        nochniki(double cena1 ,AnsiString imya1,double CCBETA1,double dalnost,AnsiString vid1):
        svetilniki(cena1 ,imya1, CCBETA1,dalnost),
        vid(vid1){};
        virtual void print (TMemo* M) const;
        nochniki& operator= (const nochniki &a);
protected:
        AnsiString vid;// вид
};
void nochniki::print(TMemo* M) const {
        M->Lines->Add("Ночники:");
        M->Lines->Add("Цена: "+FloatToStr(cena));
        M->Lines->Add("Имя: "+imya);
        M->Lines->Add("Сила света: "+FloatToStr(CCBETA));
        M->Lines->Add("Разновидность: "+(vid));
}
nochniki& nochniki::operator= (const nochniki &a){
        cena = a.cena;
        imya = a.imya;
        CCBETA = a.CCBETA;
        vid = a.vid;
return (*this);
}
 
 
//----Класс Стек----//
template <class Type1>
class Stack
{private:
        enum {MAX = 10};
        int st [MAX]; //стек в виде массива
        int top;    //вершина стека
 
public:
        Stack(Type1 st1,Type1 st2,Type1 st3);
        Stack(){top = 0;} // конструктор
        ~Stack(){};
        void push(int var)//поместить в стек
        {st [ ++top ] = var;}
        int pop (){return st [top--];} //взяьть из стека
        void print(TMemo* MM);
        Stack& operator=(const Stack& T);
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2012, 12:49
Ответы с готовыми решениями:

Стек, работающий с объектами класса Box
Здравствуйте. Нужно реализовать стек, работающий с объектами класса Box. Есть код реализации самого стека и класс бокс отдельно. не...

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

создать стек,заполнив числами 1,2,3...n.Посмотреть его содержимое,удалить стек
Всем привет!помогите,пожалуйста!!! создать стек,заполнив числами 1,2,3...n.Посмотреть его содержимое,удалить стек

30
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 16:34
Студворк — интернет-сервис помощи студентам
читай:
Цитата Сообщение от Electroflower Посмотреть сообщение
class osv_prib
{
public:
* * * *virtual void print(TMemo* M)const = 0;
* * * *osv_prib():cena(0),imya("nope"),CCBETA( 0){};
* * * *osv_prib( double cena1 ,AnsiString imya1,double CCBETA1):
* * * *cena(cena1),imya(imya1),CCBETA(CCBETA1) {};
protected:
* * * *double cena;//цена
* * * *AnsiString imya;//имя
* * * *double * CCBETA;//сила света
};
паблик только методы, а поля запротекчены.

Добавлено через 1 минуту
Кстати, имена двух членов совпадать не должны. Как компил это пропускает?

Добавлено через 41 секунду
Цитата Сообщение от Electroflower Посмотреть сообщение
taras atavin, объекты как-то из файла взять нужно
формат файла в студию.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
10.06.2012, 19:10  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Кстати, имена двух членов совпадать не должны. Как компил это пропускает?
это где?Оо
формат файла *.txt
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
10.06.2012, 19:21  [ТС]
я пытаюсь сделать все как здесь, только классы свои и вместо matrix стек должен хранить объекты класса=(
Вложения
Тип файла: rar new.rar (662.2 Кб, 7 просмотров)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 19:39
Electroflower, если классы свои, то форматы подавно свои. Формат - это представление данных, такое же внутреннее, как private-поля. Только в файловой версии. У другого класса могут быть те же внутренности? Это всё равно, что у осьминога сердце бегемота. Они разные и данные в них разные, одинаково их представить нельзя. Исключение - совместимые классы, так как именно в них данные семантически одни и те же.

Добавлено через 1 минуту
Цитата Сообщение от Electroflower Посмотреть сообщение
это где?Оо
Цена.

Добавлено через 5 минут
Цитата Сообщение от Electroflower Посмотреть сообщение
формат файла *.txt
Это только тип файла, а нужен фактический формат. Таблица, разделённая пробелами, таблица, разделённая запятыми, таблица, разделённая табуляциями, список строк, в каждой из которых поименовано каждое поле, поставлено тире и значение без апострофов и кавычек, список строк, в каждой из которых поименовано каждое поле, поставлено тире и значение в апострофах, список строк, в каждой из которых поименовано каждое поле, поставлено тире и значение в кавычках список строк, в каждой из которых поименовано каждое поле, поставлен знак равенства и значение без апострофов и кавычек, список строк, в каждой из которых поименовано каждое поле, поставлен знак равенства и значение в апострофах, список строк, в каждой из которых поименовано каждое поле, поставлен знак равенства и значение в кавычках - это всё txt. И даже свой кривоаналог xml, но по другим правилам - тоже txt.

Добавлено через 4 минуты
txt является форматом только для действительно текстовых файлов, предназначенных или для транслятора, или для человека. Если же файл разбирает любая программа, кроме транслятора языка программирования, то это что угодно на основе txt, но не сам txt. У тебя не текст, а семантически иные данные. И разбирать их будет прикладная программа.

Добавлено через 1 минуту
class osv_prib
{
public:
virtual void print(TMemo* M)const = 0;
osv_prib():cena(0),imya("nope"),CCBETA(0 ){};
osv_prib( double cena1 ,AnsiString imya1,double CCBETA1):
cena(cena1),imya(imya1),CCBETA(CCBETA1){};
protected:
double cena;//цена
AnsiString imya;//имя
double * CCBETA;//сила света
};
выделены члены с совпадающими именами.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.06.2012, 18:56
Ну так что за файл? У меня вот был текстовый формат данных проги численного модлеирования, в котором порядок полей вообще подразумевался и ни где не был объявлен. Так инженер с завода специально звонил нне, чтоб этот формат разобрать, так как иначе понять, что в файле валяется было практически не возможно. Непреднамеренная шифровка вместо формата, расшифровать могу или я сам, или хотя бы с моей прогой. И это не "по аналогии, только классы свои", параллельная версия, надо было обеспечить взаимообмен между аналогичными прогами. Но я хоть додумался сменить расширение, чтоб не мог быть прочитан не совместимой прогой случайно. Так нашёлся разщработчик, которому это понадобилось специально, а "с чем его едят", он не понял.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
14.06.2012, 17:21  [ТС]
taras atavin, мне так чсложно не надо было) просто записать в файл значения) уже все)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.06.2012, 15:30
Записать? Откуда ты их собираешься брать?
Цитата Сообщение от Electroflower Посмотреть сообщение
мне так чсложно не надо
просто будет, когда опишешь формат. А когда "читай то, не знаю что", то ещё сложнее, чем было у того инженера, который мне звонил: у него хоть сам файл был и можно было заняться криптоанализом. Только врядли бы и ФСБшники разобрали формат этим способом. Одно слово - шифровка. Из-за того, что я формат забыл описать. То, что он текстовый (txt), можно было понять после первой же попытки чтения блокнотом. Но что этот текст означает - надо или мне звонить, или Митника звать. И не факт, что и он бы за год справился. А ты пока не дала даже самого файла, только класс форматов назвала. Ну так их всего два: бинарный и txt, а курица - не птица, 1 бит - не описание.

Добавлено через 34 минуты
Вот пример спецификации формата на основе text:
Файл состоит только из текстового представления числе, перевод строки - "\r\n". В первой строке указано количество шагов шагов дискретизации по x, во второй - по y, в третьей - по z. С чертвёртой строки до последней идут сами значения температуры, разделённые запятой. В одну строку объединяются температруы в точках с совпадающими y и z, вдоль строки различается и к концу её возрастает x. Соседние строки в количестве, равном количеству шагов дискретизации по y образуют блок, в пределах блока совпадает z, в y в блоке возрастает с ростом номера строки. Блоки идут подряд без пустых строк, z от блока к блоку растёт к концу файла. Сами координаты в файле не указаны. За ось z принята вертикальная ось, положительное направление - вверх. Ось x параллельна осевой линии цапф. Ковш считается цилиндрическим, количество значений температуры в строке от её положения в файле не зависит, для ячеек за пределами ковша в файле записаны ноли, остальные значения температур не меньше 1500.
. А вот другая спецификация txt:
Перевод строки "\n". В первой строке указано количество строк за вычетом первых трёх, вторая строка содержит тип трансформатора, третья - заголовок таблицы, с четвёртой строки до последней располагаются данные таблицы. Разделитель столбов - табуляция. Заголовок таблицы имеет вид: "#\tv0\tvn\in\ik", где # - номер ступени, v0 - напряжение холостого хода, vn - номинальное напряжение, in - номинальный ток, ik - ток короткого замыкания, менять порядок полей нельзя.
. Ещё txt:
количество строк отдельное не указывается, файл читается до EOF, перевод строки - "\r\n". , в первой строке располагается заголовок таблицы, в остальных - её данные, в заголовке перечислены поля: "возраст", "табельный номер", "стаж" в том порядке, в каком хранятся данные таблицы, поддерживается любой возможный порядок полей, но в пределах файла он не меняется, разделитель столбцов - табуляция, заголовок набран только нижним регистром и не содержит лишних символов.
. Ещё:
В первой строке через пробел записано количество шагов дискретизации сначала по радиусу, потом по апликате, во второй - данные. Ячейки разделены пробелом, а ряды ячеек - табуляцией, номер ряда соответствует апликате, возрастающей вниз, а номер ячейки в ряду - радиальной координате, возрастающей от центра, перевод строки - "\r\n".
. Это всё txt.
0
28 / 28 / 3
Регистрация: 27.05.2012
Сообщений: 114
15.06.2012, 15:34
Вот мой стек, который я писал для простого арифметического парсера, может тебе пригодится.
В него можно помещать объекты любого типа

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
#pragma once
 
#define NULL 0
 
template <class T>
class Stack                     
{
    struct node                 
    {
        T item;
        node* next;
    };
 
private:
    node* tail;                 
    int anz_intems;             
 
public:
 
 
 
Stack(void) : anz_intems(0)
{
    tail=NULL;
}
 
 
virtual ~Stack(void)
{
}
 
 
template <class T> bool push(T &r)
{
     node* topNode = new node;
 
     if(!topNode) return 0;
    
     topNode->item = r;
     topNode->next = tail;
     tail = topNode;
 
     return 1;
}
 
 
template <class T> void pop()
{
    if(!tail) 
    {
        std::cout << "Steck ist leer";
    }
    else
    {
        node* Temp = tail;
        tail = tail->next;
        delete Temp;
    }
}
 
 
template <class T> T top()
{
    if(!tail) return 0;
    else return tail->item;
}
 
 
template <class T> int length()
{
    return anz_intems;
}
 
 
template <class T> bool empty()
{
    if(!anz_intems) return 1;
    else return 0;
}
};
1
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
15.06.2012, 15:36  [ТС]
что начсчет '\t' сказать можете?

Добавлено через 1 минуту
Hrundel, спасибо
0
28 / 28 / 3
Регистрация: 27.05.2012
Сообщений: 114
15.06.2012, 15:39
Цитата Сообщение от Electroflower Посмотреть сообщение
что начсчет '\t' сказать можете?
в printf, '\t' = табуляция
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
16.06.2012, 05:41
Цитата Сообщение от Hrundel Посмотреть сообщение
в printf, '\t' = табуляция
не только в printf, но и в потоковых операторах. И если ты в файл выведешь '\t', то все программы, понимающие табуляцию, именно в этом месте и прочитают табуляцию. И, наоборот, если в txt файле табуляция, то введётся '\t'.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2012, 05:41

Стек. Создать случайно генерированный стек и поменять местами первый элемент с i
Как создать случайно генерированный стек (тип элементов CHAR) и поменять местами первый элемент с i (i - вводит пользователь)?

Используя стек, описать функцию проверяющую, является ли стек пустым
Используя стек, описать функцию проверяющую, является ли стек пустым

Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами
Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами #include &lt;iostream&gt; #include...

Описать и реализовать класс Стек, моделирующий массивом стек, для хранения любых объектов
ПОЖАЛУЙСТА ПОМОГИТЕ РАЗОБРАТЬСЯ С ЗАДАЧЕЙ НА JAVA!!! только начинаю изучать этот язык. буду очень признательна за пояснение каждой...

Заполнить стек 20 случайными числами с интервала [0; -10]. Вывести стек на экран. Изъять из стека каждый четвертый элеме
Заполнить стек 20 случайными числами с интервала . Вывести стек на экран. Изъять из стека каждый четвертый элемент, найти сумму изъятых...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru