Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 32

Подружить два стека С++

04.04.2014, 17:55. Показов 727. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите подружить два класса-стека. Мне нужно что бы все методы класса STACK_A использовались классом STACK_B. То есть чтобы я мог заполнить STACK_B используя методы стека_А, а не создавать такие же самые методы для стека_В.
Вот мой код
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
#include <iostream>
#include <locale.h>
//#include <string.h>
using namespace std;
const int n=10;
class STACK_B;
class STACK_A
{
private:
    int top;
    char c[10];
public:
    STACK_A();
    friend class STACK_B;
    void push(char s);
    void pop ();
    void showtop();
    void show_stack();
};
STACK_A::STACK_A(){
    top=n;
    cout<<"\nСтек успешно создан"<<endl<<endl;
}
void STACK_A:: push(char s)
{
    if (top==0)
        cout<<"error"<<endl;
    else
    {
        top--;
        c[top]=s;
    }
}
void STACK_A:: pop()
{
    top++; 
}
void STACK_A:: showtop()
{
    cout<<c[top]<<endl;
}
void STACK_A:: show_stack () 
{
    showtop ();
    cout<<endl<<"Ваш стек:";
    for(int i=top;i<n;++i)
        cout<<endl<<"\t"<<c[i];
    cout<<endl;
}
class STACK_B
    {
private:
    int top;
    char c[10];
public:
    friend class STACK_A;
    STACK_B(STACK_A);
};
STACK_B::STACK_B(STACK_A):top(n)
{
    cout<<"\nСтек успешно создан"<<endl<<endl;
}
void main()
{
    setlocale(LC_ALL, "Rus");
    STACK_A obj_A; STACK_B obj_B(obj_A);  
start:
    cout<<"Виберете стек:\nA - действия над стеком A;\nB - действия над стеком B;\n";
    char a;
    cin>>a;
    while (a!='~'){
    switch (a){
case'A':
    cout<<"Виберете действие:\n# - удалить вершину;\n= - вивод стека не экран;\n< - вернутся к вибору стека\n"
        <<"другой символ добавляеться в стек\n\nночните ввод:\n";
    char C;
    cin>>C;
    while (C!='~')
    {   
        switch (C)
        {
        case'#': obj_A.pop(); break;
        case'=': obj_A.show_stack(); break;
        case'<': goto start;
        default: obj_A.push(C);
        }
        cin>>C;
    }
case'B':
    cout<<"Виберете действие:\n# - удалить вершину;\n= - вивод стека не экран;\n< - вернутся к вибору стека\n"
        <<"другой символ добавляеться в стек\n\nночните ввод:\n";
    char C_B;
    cin>>C_B;
    while (C_B!='~')
    {   
        switch (C_B)
        {  
//проблема в этих строках. Пишет что метод не является членом класса                
           case'#': obj_B.pop(); break;
           case'=': obj_B.show_stack(); break;
           case'<': goto start;
           default: obj_B.push(C_B);
        }
        cin>>C_B;
    }
}
    }}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2014, 17:55
Ответы с готовыми решениями:

два стека
#include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;ctype.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;stack.h&quot; #include...

Стек в два стека
Здравствуйте!! Нужно создать стек в диапазоне -50 до 50.Преобразовать стек в два стека.Причем, первый должен содержать только чётные...

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

2
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 215
04.04.2014, 19:24
А что если выделить все общие части 2 классов STACK_A и STACK_B и организовать их как базовый класс STACK_BASE. А от него уже наследовать оба класса и вносить те вещи, которые отличают их от базового.
0
1 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 32
04.04.2014, 19:33  [ТС]
Наследование использовать нельзя ((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2014, 19:33
Помогаю со студенческими работами здесь

Преобразовать стек в два стека
Преобразовать стек в два стека. В первый поместить все четные, а во второй – все нечетные числа.

Разделить стек на два стека
Подскажите, пожалуйста, как убрать лишние значения при выводе уже полученных стеков в divide происходит разделение (библиотеки шаблонов...

Создайте два стека для символов
Создайте два стека для символов. Вводите символы с клавиатуры. При этом латинские буквы должны попадать в первый стек, цифры – во второй,...

cout, два стека, нет вывода из второго
Перегрузил оператор вывода: ostream&amp; operator&lt;&lt;(ostream &amp;ost, List &amp;list) //Перегрузка оператора вывода { if (list.head != 0) ...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru