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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами. Спасайте) http://www.cyberforum.ru/cpp-beginners/thread1206808.html
Здравствуйте, очень нужна помощь. Есть тест, занесенный в текстовый файл () следующей структуры: строка1 - номер вопроса, строка2 - вопрос, строка3 - варианты ответа, строка4 - ввод ответа. Я...
C++ Составить программу на языке С++ для обработки строк с использованием указателей Дана строка. Распечатать слова в два столбика. 1 столбик — слова, имеющие четное количество букв, а второй — нечётное. help!! Добавлено через 6 часов 8 минут help http://www.cyberforum.ru/cpp-beginners/thread1206800.html
Некоторые функции не соответствуют условию задачи C++
программа выдает неправильные результаты с операциями итератора и вообще в задании написано совсем другие операции: 1) установка на начало списка, 2) проверка конца списка, 3) доступ к значению...
C++ Корневая директория ОС
Гуглю-гуглю, ну никак не могу найти информацию о том - какой функцией вытянуть корневую директорию ОС?
C++ Автоматический выбор шага и метод Рунге-Кутта http://www.cyberforum.ru/cpp-beginners/thread1206763.html
Имеется такое вычисление диф. уравнения методом Рунге-Кутты: #include <iostream> using namespace std; float fun(float x, float y) { return x*x + y*y; } void run_kut(float a, float b, float...
C++ Получение значения из функции Здравствуйте! Помогите понять что делаю не так. Очевидно неправильно возвращаю значение из функции, но как правильно реализовать не могу додуматься. Есть такой вот класс: class CSystemApi {... подробнее

Показать сообщение отдельно
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
13.06.2014, 07:36
Примерно так.

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