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

Прочитать три нижних элемента стека и поменять местами верхний и нижний элементы

04.09.2020, 18:39. Показов 3750. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:сформировать стек с элементами - строками. Прочитать три нижних
элемента стека и поменять местами верхний и нижний элементы, вывести результат.
Помогите,пожалуйста, не могу понять как конкретно стеки работают.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2020, 18:39
Ответы с готовыми решениями:

Поменять местами правый верхний и левый нижний элементы матрицы
С клавиатуры вводится матрица М*N. Поменять местами правый верхний элемент и левый нижний.

Во введенной строке верхний регистр заменить на нижний, а нижний - на верхний
В введенной строке верхний регистр заемнить на нижний и нижний на верхний, помогите с самой функцией

Поменять местами элементы стека
реализовать 2 стека, заполнить их значенияммию Разместить на форме компонент Spinedit и button. При нажатии на кнопку элементы из стеков...

11
Заблокирован
04.09.2020, 19:31
Цитата Сообщение от Goblin321 Посмотреть сообщение
Прочитать три нижних элемента стека и поменять местами верхний и нижний элементы

Стек (от англ. stack — стопка) — структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека.


Вам подойдет двусторонняя очередь.

Добавлено через 2 минуты
Цитата Сообщение от Goblin321 Посмотреть сообщение
не могу понять как конкретно стеки работают
то есть, работают по принципу "первый зашел - последний вышел".

Добавлять и удалять можно лишь последний верхний элемент.
Так что вашу задачу выполнить можно лишь полностью разобрав Стек и сформировать новый.
(Если обязательно нужно использовать Стек)
0
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 11
05.09.2020, 03:52  [ТС]
Нужно использовать стек
0
Заблокирован
05.09.2020, 13:03
Лучший ответ Сообщение было отмечено Goblin321 как решение

Решение

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
#include <iostream>
#include <string>
#include <stack>
 
using namespace std;
int main()
{
 
    typedef stack<string> St;
    // формирование Стека (ввод с консоли) :
    St  istack;
    string str;
 
    while(getline(cin, str))
    {
        if (str.empty())
            break;
        istack.push(str);
    }
 
    // Задачи :
    // 1. Прочитать три нижних элемента
    // 2. Поменять верхний и нижний местами
 
    const int last_elements = 3; // количество выводимых последних элементов (по задаче 3)
 
    St res_stack;  // результирующий Стек
    St tmp_stack; // временный (или реверсный)
    St last;
 
    res_stack.push(istack.top()); // скопировали верхний елемент в начало нового Стека
    istack.pop(); // удалили верхний елемент
 
    while( !istack.empty() )
    {
            tmp_stack.push(istack.top());
            istack.pop();
    }
 
    str = tmp_stack.top();
    cout<<"Element 1 :\t"<<tmp_stack.top()<<endl;
    tmp_stack.pop();
    int le = last_elements - 1;
 
    // продолжаем формировать результирующий Стек
    while (le>0 &&  tmp_stack.size()>0)
    {
         cout<<"Element "<<last_elements - le + 1<<": \t"<<tmp_stack.top()<<endl;
         res_stack.push(tmp_stack.top());
         tmp_stack.pop();
         --le;
    }
    while(!tmp_stack.empty())
    {
         res_stack.push(tmp_stack.top());
         tmp_stack.pop();
    }
    // добваляем последний элемент на верх
    res_stack.push(str);
 
    // и выводим результат
    cout<<endl<<"Stack :"<<endl;
    while(!res_stack.empty())
    {
         cout<<res_stack.top()<<endl;
         res_stack.pop();
    }
    return 0;
}

P.S Еще более бесполезной задачи я не видел, Стек предназначен совсем для другого.
0
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 11
07.09.2020, 14:58  [ТС]
SmallEvil, программа меняет местами предпоследний нижний и предпоследний верхний элементы и прочитывает 3 верхних элемента, а не нижних
0
Заблокирован
07.09.2020, 16:14
Цитата Сообщение от Goblin321 Посмотреть сообщение
SmallEvil, программа меняет местами предпоследний нижний и предпоследний верхний элементы и прочитывает 3 верхних элемента, а не нижних
Это Стек, он выводится в обратном порядке .

Добавлено через 3 минуты
результат работы :
1
2
3
4
5
6
7
8
9
10

Element 1 : 1
Element 2: 2
Element 3: 3

Stack :
1
9
8
7
6
5
4
3
2
10
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
07.09.2020, 16:18
Цитата Сообщение от Goblin321 Посмотреть сообщение
Нужно использовать стек
Кто сказал, что нужно использовать стек для такой задачи? Вообще-то инструменты выбираются исходя из поставленной задачи и начальных условий, а не задачи выбираются исходя из предоставленных инструментов, так нельзя.
0
Заблокирован
07.09.2020, 16:19
результирующий Стек имеет верхний элемент 1 - 9 - ... 2 - 10
входной же Стек имеет верхний элемент 10 - 9 ... 2 - 1

Добавлено через 42 секунды
Nishen, абсолютно солидарен.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
07.09.2020, 16:43
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вам подойдет двусторонняя очередь.
Цитата Сообщение от Nishen Посмотреть сообщение
так нельзя.
Ну так отвлекитесь немного. Ханойские башни тоже бесполезное занятие, но придумать и реализовать алгоритм для них интересно же.
Так почему же реализовать задачи ТС на стеке "бесполезно" или "так нельзя"? Это просто учебное задание и только
0
Заблокирован
07.09.2020, 16:56
Цитата Сообщение от AlexVRud Посмотреть сообщение
Так почему же реализовать задачи ТС на стеке "бесполезно" или "так нельзя"? Это просто учебное задание и только
и судя по непониманию ТС структуры Стека, ему это как раз и нужно.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
07.09.2020, 17:20
Goblin321, Представь стек в виде детской пирамидки, где кольца это элементы стека.
У нас есть только две операции, положить в стек элемент и достать из стека верхний элемент:


Тогда, чтобы прочитать три нижних надо:

1. Переложить все элементы в другой стек (т.е. перевернуть стек)
2. Переложить верхние три обратно, обработав их (например, вывести на экран)
3. Переложить остальные.


Для того, что бы поменять местами первый и последний, можно сделать, например, так:

0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
07.09.2020, 17:35
Цитата Сообщение от SmallEvil Посмотреть сообщение
и судя по непониманию ТС структуры Стека, ему это как раз и нужно.
Не удивлюсь, если изначально перед ТС была поставлена задача реализовать свой стек. И уже используя эту реализацию решить поставленные две задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2020, 17:35
Помогаю со студенческими работами здесь

Поменять местами крайние элементы стека
Помогите написать программу:Создать стек из случайных чисел и поменять местами крайние элементы.

Поменять местами первый и последний элементы стека
Создать стек со случайными целыми числами в диапазоне –50 до +50. Поменять местами первый и последний элементы стека.

Поменять местами первый и последний элементы стека
Помогите , как поменять местами первый и последний элемент стека. Причем вводя данные с клавиатуры. Выполнив это задание, не используя...

Поменять местами первый и последний элементы стека
Создать стек со случайными целыми числами в диапазоне –50 до +50. Поменять местами первый и последний элементы стека

Поменять местами первый и последний элементы стека
Кто может помочь????Поменять местами первый и последний элементы стека.(всё в С#)Первое и последнее предупреждение: давайте темам...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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