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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
#1

Стек с объектами - C++

10.06.2012, 12:49. Просмотров 1926. Ответов 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);
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 12:49     Стек с объектами
Посмотрите здесь:

Работа с объектами - C++
Здравствуйте, делаю курсовую по работе с датами, их вычитанием и сложением. Вообще в начале у меня идет процесс инициализации даты,...

Работа с объектами в С++ - C++
С текстового файла считывается информация о студентах (фамилия, когда и на какой срок выдали книгу из библиотеки). Пользователь вводит...

Действия с объектами - C++
У меня объекты класса выполняют одну и туже функцию, как можно сделать все это циклом (если возможно) ? Add_Pac.Write_Start_OL(); ...

Программа с классом и объектами!!!))) - C++
Всем привет)Помогите пожалуйста исправить программку так,что бы она была с классом и объектами!!!))) Задание: Ввести несколько строк...

Сообщения между объектами - C++
Уважаемые господа! Я недавно начал читать литературу по Smalltalk. Так вот, там коммуникация между объектами происходит через отправку и...

Программа с классом и объектами. - C++
Дана символьная матрица размера 4 х 5. Из последовательности её строк сформировать новую строку и определить ее длину. Проверить наличие...

Работа с объектами классов - C++
Всем здраствуйте. Помогите если вам не так сложно :) Вот сейчас я поясню, то что не могу сделать: В соответствии с написанной...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 15:54     Стек с объектами #16
Ну конечно.
C++
1
2
3
4
5
class TItem
        {public:
                TBase Data;
                TItem *Previus;
        };
. Данные по указателю водятся в массивах, а это список.
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
10.06.2012, 16:07  [ТС]     Стек с объектами #17
taras atavin, а как правильно прописать кнопки ввода, печати? все переделывать нужно?=(
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 16:09     Стек с объектами #18
А как вообще устроено приложение? Например, откуда ты собираешься брать объекты для добавления в стеки? Как хочешь писать поля (например, название и цену), если они запривачены?
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 16:11     Стек с объектами #19
Electroflower,Sed nihil scis, libri legi.
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
10.06.2012, 16:15  [ТС]     Стек с объектами #20
taras atavin, объекты как-то из файла взять нужно=/ это мне еще предстоит...
у меня вроде везде public
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 16:34     Стек с объектами #21
читай:
Цитата Сообщение от 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, объекты как-то из файла взять нужно
формат файла в студию.
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
10.06.2012, 19:10  [ТС]     Стек с объектами #22
Цитата Сообщение от taras atavin Посмотреть сообщение
Кстати, имена двух членов совпадать не должны. Как компил это пропускает?
это где?Оо
формат файла *.txt
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
10.06.2012, 19:21  [ТС]     Стек с объектами #23
я пытаюсь сделать все как здесь, только классы свои и вместо matrix стек должен хранить объекты класса=(
Вложения
Тип файла: rar new.rar (662.2 Кб, 6 просмотров)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 19:39     Стек с объектами #24
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;//сила света
};
выделены члены с совпадающими именами.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 18:56     Стек с объектами #25
Ну так что за файл? У меня вот был текстовый формат данных проги численного модлеирования, в котором порядок полей вообще подразумевался и ни где не был объявлен. Так инженер с завода специально звонил нне, чтоб этот формат разобрать, так как иначе понять, что в файле валяется было практически не возможно. Непреднамеренная шифровка вместо формата, расшифровать могу или я сам, или хотя бы с моей прогой. И это не "по аналогии, только классы свои", параллельная версия, надо было обеспечить взаимообмен между аналогичными прогами. Но я хоть додумался сменить расширение, чтоб не мог быть прочитан не совместимой прогой случайно. Так нашёлся разщработчик, которому это понадобилось специально, а "с чем его едят", он не понял.
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
14.06.2012, 17:21  [ТС]     Стек с объектами #26
taras atavin, мне так чсложно не надо было) просто записать в файл значения) уже все)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.06.2012, 15:30     Стек с объектами #27
Записать? Откуда ты их собираешься брать?
Цитата Сообщение от 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.
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
15.06.2012, 15:34     Стек с объектами #28
Вот мой стек, который я писал для простого арифметического парсера, может тебе пригодится.
В него можно помещать объекты любого типа

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;
}
};
Electroflower
Форумчанка
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 425
Записей в блоге: 1
15.06.2012, 15:36  [ТС]     Стек с объектами #29
что начсчет '\t' сказать можете?

Добавлено через 1 минуту
Hrundel, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 15:39     Стек с объектами
Еще ссылки по теме:

Работа с объектами типа string - C++
Здравия желаю!:) Возник вопрос по строкам. При таком коде#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int...

Отношения между классами и объектами - C++
Для каждого индивидуального варианта необходимо создать консольную программу на С++, реализующую отношение ассоциации (агрегации или...

Сортировка массива с объектами класса - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class tovary { private: string name; double cina; int kod; ...

Реализация отношений между объектами - C++
Здравствуйте. Есть задумка организовать класс или что-то в этом роде между объектами в программе, который бы отражал их взаимные...

Заполнение map объектами класса - C++
Здравствуйте! Нашел пример заполнения map таким образом: map&lt;string, int&gt; M; M = 1; Но при заполнении map аналогичным образом...


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

Или воспользуйтесь поиском по форуму:
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
15.06.2012, 15:39     Стек с объектами #30
Цитата Сообщение от Electroflower Посмотреть сообщение
что начсчет '\t' сказать можете?
в printf, '\t' = табуляция
Yandex
Объявления
15.06.2012, 15:39     Стек с объектами
Ответ Создать тему
Опции темы

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