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

Сравнение элементов в стеке

12.04.2020, 01:38. Показов 4317. Ответов 9

Студворк — интернет-сервис помощи студентам
Доброй ночи, наткнулся на такую задачу, нужно создать стек, ввести в него элементы, к примеру adcbb*bbcaa, и сравнивать элементы относительно *, то есть b == b,b == b, c == c, d !=a, a == a. Нельзя использовать массивы, я сделал этоиспользую массив, а как без массива сделать не понимаю, подтолкните в нужную сторону пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2020, 01:38
Ответы с готовыми решениями:

Определить количество элементов в стеке
Привет народ. Подскажите пожалуйста как получить кол-во элементов в стеке? Я пытаюсь написать функцию выдающую такое значение. ...

Инициализация, добавление и удаление элементов в СТЕКЕ
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через связный список 2) Добавить элемент...

Если создать указатель на переменную, созданную в стеке, переменная перемещается в кучу? Или остается в стеке?
Подскажите, если не трудно, я создаю переменную любого стандартного типа и она хранится в стеке, а если я создаю указатель на эту...

9
Just Do It!
 Аватар для XLAT
4194 / 2649 / 654
Регистрация: 23.09.2014
Сообщений: 8,940
Записей в блоге: 3
12.04.2020, 09:06
Цитата Сообщение от origami111 Посмотреть сообщение
Нельзя использовать массивы, я сделал это использую массив, а как без массива сделать не понимаю, подтолкните в нужную сторону пожалуйста.
Сначала дайте определение стека: что такое стек?

1.
Вот как я определяю(не долго думая) стек:
стек это массив в котором все действия проводятся с привилегированной ячейкой этого массива,
так называемой вершиной стека, обычно это крайняя ячейка массива, сами действия могут быть оформлены в виде интерфейса необходимых функций(если стек как ATD, то их называют методами).

2.
А каково ваше определение стека???

3.
далее лезем в вики и вытаскиваем другое определение(более правильное):
Что такое стек?
возможно речь идёт о том, что вам нужно сделать стек на списке?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
12.04.2020, 10:24
XLAT, А вот интересно, "стек", который также добавляет элементы только на вершину, но при этом позволяет проходить циклом по всем элементам и читать их это стэк?
А если позволяет элементы из середины модифицировать тоже, просто не удаляя их раньше верхнего? Это всё ещё стэк?
Мне казалоь, чтобы даже прочитать элемент из середины со стека н6еобходимо поэлементно разобрать все его верхние элементы, прочитать искомый, а потом собрать стек назад. Иначе это уже массив, открывающий нам свои произвольные элементы.
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
12.04.2020, 11:50  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
А каково ваше определение стека???
Стек - это последовательность элементов, которое использует правило : один зашел другой вышел. Использовать можно только последний зашедший элемент. К примеру : магазин у автомата, ты можешь вытащить только один патрон, которые последний зашел. Вот моё определение стека.
Как сказал уже Kuzia domovenok, это не массив, поскольку нельзя обратиться к любому из элементов и вытащить его.
0
Just Do It!
 Аватар для XLAT
4194 / 2649 / 654
Регистрация: 23.09.2014
Сообщений: 8,940
Записей в блоге: 3
12.04.2020, 11:50
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А если
моё квазитезисное имхо:
1.
Ваша задача может быть решена 100500 способами и будет работать правильно, НО:
если вы крестовик,
то вас всегда чуть ли(возможно после правильности работы) не на перовом месте требование соблюдения
(явного или просто по максимуму) критерия БЫСТРОДЕЙСТВИЯ исполнения вашего кода.
Иначе, какой вы тогда крестовик?
Эта же(делание качи разных оптимизаций) фишка С++! не так ли?

2.
И тут тогда вам нужны дополнительные телодвижения по выбору подходящих типов(структур) данных:
либо стандартных из std::, либо своё велосипедостроение,
которое, скорее и не будет являться велосипедостроением,
так как ваш структура будет заточена(произносится с ударением) на вашу задачу.

3.
Собсно, стек, если он реализован на списке, нужно смотреть как это влияет на скорость выполнения вашей задачи.
Что нужно делать с этим стеком, кроме, как иметь доступ к его вершине?
Если не нужно держать данные всё время отсортированные, и нужен доступ ко внутренним ячейкам внутри диапазона,
то стек на списке будет камнем висеть на производительности.

4.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А если позволяет элементы из середины модифицировать тоже,
просто не удаляя их раньше верхнего? Это всё ещё стэк?
Лично я ни разу не стесняюсь строить свои велосипеды, например, на тех же контейнерах из std::,
опять же например, сварганить стек из вектора,
из-за того, снова например, что мне нужен быстрый доступ к любым ячейка внутри.
И даже могу дать ему какое-нить своё название из мира сказочного фэнтази.
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
12.04.2020, 11:55  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
возможно речь идёт о том, что вам нужно сделать стек на списке?
В задании указано :
Создать программу, которая :
1. создает начальное введение рядка символов и формирует из символов стек.
2. потом, используя стек, проводит проверку рядка на симметричность относительно *
В задании сказано что нельзя использовать массивы, остальное не указано.
0
Just Do It!
 Аватар для XLAT
4194 / 2649 / 654
Регистрация: 23.09.2014
Сообщений: 8,940
Записей в блоге: 3
12.04.2020, 11:58
Цитата Сообщение от origami111 Посмотреть сообщение
В задании указано :
и ничего не сказано, что изначально вам нужно организовать из палок и смолы
что-то подобное, что можно назвать стеком?
Возможно составители задания уверены, что вы и так об это отлично осведомлены и знаете как это сделать!
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
12.04.2020, 12:09  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
Возможно составители задания уверены, что вы и так об это отлично осведомлены и знаете как это сделать!
Возможно это и так, с учетом того что я на 1 курсе, и таковых лекций у нас не было, нашел только такую инфу по стекам.
В своей программе я решил это задание, но не таки образом как указано в задание, там я использовал все-таки массив. По-другому не знаю как сделать.

Добавлено через 4 минуты
Может подтолкнете в правильную сторону как бы вы это решили не используя массивов ?
У меня получилась такая програмка :
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
struct List{
    char x;
    List* Next, * Head;
};
void Add(char x, List*& MyList) { // добавить элемент в стек
    List* temp = new List;
    temp->x = x;
    temp->Next = MyList->Head;
    MyList->Head = temp;
}
void Show(List* MyList) { // отображение стека
    List* temp = MyList->Head;
    while (temp != NULL){
        cout << temp->x;
        temp = temp->Next;
    }
}
void ClearList(List* MyList) { // удаление стека из памяти
    while (MyList->Head != NULL){
        List* temp = MyList->Head->Next;
        delete MyList->Head;
        MyList->Head = temp;
    }
}
int main() {
    setlocale(0, "");
    List* MyList = new List; // выделяем память для стека
    MyList->Head = NULL; // во избежения ошибок инициализируем первый элемент
    char a[50];
    int i, j, k = 0;
 
    cout << "       Программа для проверки симметричности относительно '*' " << endl << endl;
    cout << "Введите символы, для разделения используйте '*' : ";
    cin >> a;
    int size = strlen(a);
 
    for (int i = 0; i < size; i++) //поиск номера элемента '*'
        if (a[i] == '*')
            k = i;
 
    if (k == 0) //если в строке не найден символ '*'
        cout << "В строке нету символа '*'" << endl;
    else {
        if (!((size - 1) % 2 == 0)) // если число символов не чётное
            cout << "Букв до '*' и после должно быть одинаковым" << endl;
        else {
            for (i = k - 1, j = k + 1; (i >= 0) || (j < size); i--, j++) {
                Add(a[i], MyList);
                if (a[i] == a[j])
                    cout << i+1 << " " << j+1 << "\t" << a[i] << endl;
                else
                    cout << i+1 << " " << j+1 << "\t" << a[i] << a[j] << endl;
            }
        }
    }
    ClearList(MyList); // очищаем память
    delete MyList->Head;
    delete MyList;
 
    return 0;
}
0
Just Do It!
 Аватар для XLAT
4194 / 2649 / 654
Регистрация: 23.09.2014
Сообщений: 8,940
Записей в блоге: 3
12.04.2020, 12:23
Цитата Сообщение от origami111 Посмотреть сообщение
Может подтолкнете в правильную сторону как бы вы это решили не используя массивов ?
1.
Для разминки сделать задачу на стандартном стеке:
C++
1
2
3
4
5
#include <stack>
 
...
std::stack<int> mystack;
...
Стек std::stack в C++: легко и просто!

2. Далее велосипедить, например, на списке:
Разработка шаблонного класса реализующего стек в виде односвязного списка
0
2 / 2 / 0
Регистрация: 14.01.2020
Сообщений: 129
12.04.2020, 12:26  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
1.
Для разминки сделать задачу на стандартном стеке:
C++
1
2
3
4
5
#include <stack>
 
...
std::stack<int> mystack;
...
Стек std::stack в C++: легко и просто!

2. Далее велосипедить, например, на списке:
Разработка шаблонного класса реализующего стек в виде односвязного списка
Хорошо, отпишусь что получится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2020, 12:26
Помогаю со студенческими работами здесь

Подсчитать количество элементов в стеке
Помогите пожалуйста реализовать подсчёт количества элементов в стеке! program steki_lr2; uses crt; type pitem = ^item; ...

Подсчитать количество элементов в стеке
Помогите написать код на паскале (сам не шарю) Задание: Подсчитать количество элементов в стеке. Чтобы можно было задать размер стека и...

Подсчитать количество элементов в стеке
Помогите написать программу &quot;Подсчитать количество элементов в стеке&quot;. Заранее большое спасибо.

Подсчитать количество элементов в стеке
1. Сформировать список строк из текстового файла. 2. Подсчитать количество элементов в стеке

Смена мест элементов в стеке
помогите сделать и если можно то с каментариями Дан стек размера N (N — четное число). Поменять местами его первый элемент со вторым,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru