Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235

Стек

26.02.2011, 18:39. Показов 5760. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня такая проблема: Разработать функцию, которая по одному стеку строит два новых: Stack1 из положительных элементов и Stack2. Не мог бы хоть кто, объяснить, как вводить эл-ты в стек, и дать хоть небольшую подсказку по заданию..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2011, 18:39
Ответы с готовыми решениями:

Используя стек, описать функцию проверяющую, является ли стек пустым
Используя стек, описать функцию проверяющую, является ли стек пустым

Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами
Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами #include <iostream> #include...

Заполнить стек 20 случайными числами с интервала [0; -10]. Вывести стек на экран. Изъять из стека каждый четвертый элеме
Заполнить стек 20 случайными числами с интервала . Вывести стек на экран. Изъять из стека каждый четвертый элемент, найти сумму изъятых...

7
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
26.02.2011, 18:51
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
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
void func(std::stack<int> stc1, std::stack<int> &stc2, std::stack<int> &stc3){
  while(!stc1.empty()){
    if(stc1.top() > 0){
      stc2.push(stc1.top());
      stc3.push(stc1.top());
    }
    stc1.pop();
  }
}
 
int main(){
  std::stack<int> stc1, stc2, stc3;
  srand(time(0));
  for(int i = 0; i < 10; ++i)
    stc1.push(rand() % 100 - 50);
  func(stc1, stc2, stc3);
  std::cout << "\n\n1-> ";
  while(!stc1.empty()){
    std::cout << stc1.top() << ' ';
    stc1.pop();
  }
  std::cout << "\n\t2-> ";
  while(!stc2.empty()){
    std::cout << stc2.top() << ' ';
    stc2.pop();
  }
  std::cout << "\n\t3-> ";
  while(!stc3.empty()){
    std::cout << stc3.top() << ' ';
    stc3.pop();
  }
  return 0;
}
0
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
26.02.2011, 19:05  [ТС]
Не понял.

Добавлено через 10 минут
Ой, извиняюсь, это решение что-ли? =\
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
26.02.2011, 19:10
Цитата Сообщение от Sick2 Посмотреть сообщение
Ой, извиняюсь, это решение что-ли? =\
Да, средствами STL.
0
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
26.02.2011, 20:29  [ТС]
Спасибо, но мне удаление и добавление эл-тов желательно через ф-ции отдельные сделать:
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
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
 
int *Stack, max,*Stackan,maxx;
 
void push(int x);
int pop(void);
 
void main(void)
{
        int iEl;
        
        printf("Vvedite razmer stecka\n");
        scanf("%d",&max);
        Stack = new int [max];
 
        for (int i = 0; i < max; i++)
                Stack[i] = 0;
        
        printf("Vvedite elemeti\n");
 
        for (int i = 0; i < 4; i++)
        {
                scanf("%d",&iEl);
                if(iEl > 0)
                {
                    Stackan = new int [maxx];
                    for( int j=0;j<maxx;j++)
                        Stackan[j]=0;
                        push(iEl);}
        }
 
        printf("\nSteck:\n");
        
        for (int i = 0; i < 4; i++)
        {
                iEl = pop();
                printf("\n%d ", iEl);
        }
 
        getch();
}
 
void push(int x)
{
        for (int i = max-1; i > 0; i--)
                Stack[i] = Stack[i-1];
 
        Stack[0] = x;
}
 
int pop(void)
{
        int res = Stack[0];
 
        for (int i = 0; i < max - 1; i++)
        {
                Stack[i] = Stack[i+1];
                Stack[i+1] = 0;
        }
 
        return res;
}
что-то пытался, что смотрел из других примеров, посмотрите, что не так.

Добавлено через 1 час 7 минут
кто-нибудь помогите
0
21 / 21 / 3
Регистрация: 12.07.2010
Сообщений: 27
26.02.2011, 20:48
добавление и взятие элемента можно сделать, например, так

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
#include <iostream>
 
using namespace std;
 
struct node
{
  int data; //данные
  node *next; //указатель на следующий элемент
};
 
class stack
{
private:
  node *top; //вершина стека
public:
  stack(): top(NULL){}
  ~stack();
  int pop(void); //взять из стекаа
  void push(int); //поместить в стек
};
 
  stack::~stack()
  {
   node *temp=NULL;
   while(top)
     {
      temp=top;
      top=top->next;
      delete temp;
     }
  }
 
  int stack::pop(void)
  {
    int out_numb=top->data;
    node *temp=top;
    top=top->next;
    delete temp;
    return (out_numb);
  }
 
  void stack::push(int number)
  {
    node *temp=new node;
    temp->data=number;
    temp->next=top;
    top=temp;
  }
0
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
27.02.2011, 15:27  [ТС]
Через классы мне нельзя пока.Не прошли ещё, так у меня код не верный?

Добавлено через 4 часа 17 минут
ап, посмотрите кто код, что я выложил...
0
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
05.03.2011, 21:26  [ТС]
Народ, помогите, умоляю. Всё мучаюсь с заданием.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cout<<"vvedite razmer stecka"<<endl;
    cin>>n;
    cout<<"vvedite elementi"<<endl;
    for (int i=0; i<n; i++) 
    {
        cin>>q; st1.Push(q);
 
        if(q>0) st2.Push(q);
        else st3.Push(q);
    } 
     cout << "stack ";
  while(!st2.isEmpty()){
   cout << st2.Top << ' ';
    st2.Pop();
  }
Почему при выводе элементов стека, у меня выводятся адреса, а не сами элементы?
Я думаю это из-за Top, но не могу исправить...
В общем вылаживаю весь код.
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
// Stack.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "stdafx.h"
#include "stack.h"
bool Stack::isEmpty()
{
    return ((*Top).prev==NULL);
}
 
int Stack::Pop()
{
    int vp=STACK_ESE;
    if (!isEmpty()) 
    {
        vp=(*Top).key;
        Node* pr=(*Top).prev;
        delete Top;
        Top=pr;
    }
    return vp;
}
void Stack::Push(int x)
{
    Node *nd = new Node;
    nd->key=x;
    nd->prev=Top;
    Top=nd;
}
Stack CreateStack()
{
    Stack *st=new Stack;
    st->Top=NULL;
    st->Push(STACK_ESE);
    return *st;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define STACK_ESE    -1 
 
 
    struct Node
    {
    int    key;
    Node* prev;
    };
struct Stack                      
{
    Node*  Top;
      
    void Push(int);         
    int  Pop();  
    bool isEmpty(); 
};
Stack CreateStack()
;
Помогите!

Добавлено через 1 час 25 минут
АП!!!

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

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора?
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2. В какой памяти он хранится и почему...

Сформировать стек из 6 цифр. Вывести стек на экран. Удалить элементы из стека, увеличить каждый из них на единицу и снов
Сформировать стек из 6 цифр. Вывести стек на экран. Удалить элементы из стека, увеличить каждый из них на единицу и снова поместить в стек...

Сформировать стек из N чисел. Найти сумму нечетных чисел из стека. Результат поместить в стек
Здравствуйте. Помогите, пожалуйста, решить задачу: Сформировать стек из N чисел. Найти сумму нечетных чисел из стека. Результат поместить...

при работе рекурсивной функции заканчивается стек и программа соответственно; как сделать так, чтобы она писала "стек закончился"?
Сабж g++ 4.5.0

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...)
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то делал,или встречался с таким заданием: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru