Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tonzik
32 / 32 / 8
Регистрация: 11.06.2013
Сообщений: 124
#1

Создать стек на основе контейнера vector - C++

13.06.2014, 02:02. Просмотров 899. Ответов 1
Метки нет (Все метки)

На основе контейнера vector построить стек целых чисел. Выполнить операции занесения элемента в стек, извлечение значения с вершины стека, вывода всех значений стека на экран, определения количества элементов стека.
Предусмотреть возможности:
- Формирование входных данных заданного размера (количество точек для проверки);
- Сохранение входных данных в файле с заданной названием;
- Считывание входных данных из заданного файла;
- Вывод результатов на экран или в файл.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 02:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать стек на основе контейнера vector (C++):

Реализовать возможности контейнера vector используя класс стек - C++
Ребята, помогите разобраться с STL . Про использование vector для int и так далее я разобралась. vector<int> array(arraySize); А что...

На основе контейнера vector построить двумерный динамический массив - C++
Каким образом можно один двумерный массив скопировать в другой?С помощью copy() не получается На основе контейнера vector построить...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Можно ли на основе vector'а создать двумерный массив - C++
Доброго времени суток. Собственно, вопрос заключен в самой теме. Возможно ли создать двумерный массив с помощью класса vector? И если да,...

Создать стек целых чисел на основе статического массива. - C++
Создать стек целых чисел на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, вершина стека. На...

Создать базовый класс список и реализовать на его основе стек и очередь - C++
2. Создать базовый класс список. Реализовать на базе списка стек и очередь с виртуальными функциями вставки и вытаскивания.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
13.06.2014, 07:36 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Примерно так.

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
136
137
138
139
140
141
142
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
class vStack
{
   public:
      void push(int);
      bool pop(int&);
      unsigned count();
      bool display();
      bool save(const std::string&);
      bool load(const std::string&);
   private:
      bool fromStream(std::istream& strm);
      bool toStream(std::ostream&);
      std::vector<int> data_;
};
 
void vStack::push(int val)
{
   data_.push_back(val);
}
 
bool vStack::pop(int& val)
{
   if(data_.size())
   {
      val = data_[0];
      data_.erase(data_.begin()+0);
      return true;
   }
   return false;
}
 
unsigned vStack::count()
{
   return data_.size();
}
 
bool vStack::toStream(std::ostream& strm)
{
   for(unsigned pos=0;pos<data_.size();pos++)
   {
      strm<<data_[pos]<<std::endl;
      if(!strm) break;
   }
   return strm;
}
 
bool vStack::fromStream(std::istream& strm)
{
   data_.clear();
   while(true)
   {
      int val=0;
      strm>>val;
      if(strm)
      {
         data_.push_back(val);
      }
      else
      {
         break;
      }
   }
   return (data_.size()>0 && strm.eof());
}
 
bool vStack::display()
{
   return toStream(std::cout);
}
 
bool vStack::save(const std::string& f_name)
{
   std::ofstream out_file(f_name.c_str());
   return toStream(out_file);
}
bool vStack::load(const std::string& f_name)
{
   std::ifstream in_file(f_name.c_str());
   return fromStream(in_file);
}
 
int main()
{
   int cnt=0;
   std::cout<<"Enter size\n";
   std::cin>>cnt;
   if(cnt>0)
   {
      vStack stack;
      for(int nom=0;nom<cnt;nom++)
      {
         std::cout<<"Enter element "<<nom<<"\n";
         int elem = 0;
         std::cin>>elem;
         stack.push(elem);
      }
      std::cout<<"\n"<<" stack size "<< stack.count();
      std::cout<<"\n";
      stack.display();
      std::cout<<"\n";
 
      int pop_val=0;
      if(stack.pop(pop_val))
      {
         std::cout<<"value "<<pop_val<<"\n";
      }
 
      std::cout<<"\n"<<" stack size "<< stack.count();
      std::cout<<"\n";
      stack.display();
      std::cout<<"\n";
      std::cout<<"Enter file_name\n";
      std::string f_name;
      std::cin>>f_name;
      if(!stack.save(f_name))
      {
         std::cout<<"Save failed\n";
      }
      vStack loaded_stack;
      std::cout<<"\n";
      std::cout<<"Enter file_name\n";
      std::cin>>f_name;
      if(loaded_stack.load(f_name))
      {
         std::cout<<"\n"<<" stack size "<< loaded_stack.count();
         std::cout<<"\n";
         loaded_stack.display();
      }
      else
      {
         std::cout<<"Load failed\n";
      }
 
 
   }
   return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 07:36
Привет! Вот еще темы с ответами:

Очистка контейнера vector - C++
Доброго времени суток господа программисты. У меня возникла дилемма. В общем, у меня есть вектор std::vector&lt;std::vector&lt;int&gt; &gt; grid;...

Обработка STL контейнера vector - C++
Текст дан в виде вектора. Отсортировать элементы этого вектора и превратить на два списка так, чтобы в первом были только те элементы,...

Reallocation памяти контейнера std::vector - C++
расширение памяти в этом контейнере происходит по логарифмическому закону. Объясните , пожалуйста, знатоки, зачем это нужно?

Копирование контейнера vector в конструкторе (STL) - C++
Добрый день! У меня есть класс, в котором объявлен вектор указателей на объекты: class Schedule { public: ... Schedule(void);...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru