15.05.2013, 20:48 | #1 (permalink) |
Member
Регистрация: 10.12.2012
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задачка про стеки
1.Из двух стеков равной длины создать один стек, не удаляя исходные стеки (создавать копии элементов). При создании нового стека элементы брать по-очереди, по одному элементу из каждого стека. |
15.05.2013, 20:48 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме ранее создавались аналогичные обсуждения Задачка в QuickBasic Стеки Задачка Стеки |
16.05.2013, 15:07 | #2 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Код:
#include <iostream> using namespace std; class stack{ public: stack(){ this->id = 0; this->els = new int(this->id); } ~stack(){ delete[] this->els; } void push(int el){ int *_els = new int(this->id+1); for(int i=0; i<this->id; i++){ _els[i] = this->els[i]; } _els[this->id] = el; delete[] this->els; this->id++; this->els = new int(this->id); for(int i=0; i<this->id; i++){ this->els[i] = _els[i]; } delete[] _els; } int pop(){ this->id--; return this->els[this->id]; } int get_id(){ return this->id; } private: int *els, id; }; int main() { stack A, B, C; A.push(1); A.push(3);A.push(5);A.push(7); B.push(2);B.push(4);B.push(6); int _min = min(A.get_id(), B.get_id()); if(_min != 0){ for(int i=0; i < _min; i++){ C.push(A.pop()); C.push(B.pop()); } } int count = C.get_id(); for(int i=0; i < count; i++){ cout << C.pop(); } return 0; } |
17.05.2013, 00:00 | #3 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
программа не правильна(вернее она в некоторых компиляторах выполняется правильно, но это исключительно из-за того, что они слишком умные)
Код:
#include <iostream> using namespace std; class stack{ public: stack(){ this->id = 0; this->els = NULL; } ~stack(){ delete[] this->els; } void push(int el){ if (this->els==NULL){ this->els = new int[this->id+1]; this->els[this->id] = el; this->id++; } else{ int *_els = new int[this->id+1]; for(int i=0; i<this->id; i++){ _els[i] = this->els[i]; } _els[this->id] = el; delete[] this->els; this->id++; this->els = new int[this->id]; for(int i=0; i<this->id; i++){ this->els[i] = _els[i]; } delete[] _els; } } int pop(){ this->id--; return this->els[this->id]; } int get_id(){ return this->id; } private: int *els, id; }; int main() { stack A, B, C; A.push(1);A.push(3);A.push(5);A.push(7); B.push(2);B.push(4);B.push(6); int _min = min(A.get_id(), B.get_id()); if(_min != 0){ for(int i=0; i < _min; i++){ C.push(A.pop()); C.push(B.pop()); } } int count = C.get_id(); for(int i=0; i < count; i++){ cout << C.pop(); } return 0; } |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|