Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Создать стэк из целый чисел. Удвоить в нем вхождение всех четных элементов
- #include <fstream>
- #include <stack>
- using namespace std;
- void printStack(stack<int> st, ofstream& out) // функция вывода стэка в файл output.txt
- {
- while(st.size() != 0)
- {
- out << st.top() << " ";
- st.pop();
- }
- out << endl;
- }
- void mergeStacks(stack<int>& s1, stack<int>& s2) // функция объединения стэков и записи результата в первый из них
- {
- while (s2.size() != 0)
- {
- s1.push(s2.top());
- s2.pop();
- }
- }
- void changeStack(stack<int>& st) // функция, решающая саму задачу
- {
- stack<int> help;
- while (st.size() != 0)
- {
- help.push(st.top());
- if (st.top() % 2 == 0) help.push(st.top()); // заполняем вспомогательный стэк элементом дважды, если он четный
- st.pop();
- }
- mergeStacks(st, help);
- }
- int main()
- {
- ifstream in("input.txt"); // объявление объекта типа ifstream для чтения из файла input.txt
- ofstream out("output.txt"); // объявление объекта типа ofstream для записи в файл output.txt
- stack<int> st; // создаем стэк
- int x; // переменная для занесения элементов в стэк
- while (in >> x) st.push(x); // заполнение стэка
- printStack(st, out); // вывод стэка до преобразования
- changeStack(st); // преобразование стэка
- printStack(st, out); // вывод стэка после преобразования
- in.close(); // закрытие входного файлового потока
- out.close(); // закрытые выходного файлового потока
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement