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

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

10.06.2012, 12:49. Показов 4664. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru