Moj program ne moze da to uradi. On prihvata sve reci i to je sve. Kada sa izbrisao naredbu st.push(str) on je prikazao komentar Oops nijedan string nije procitan prekidam. I to naravno u slucaju kada upisem neki sadrzaj, posto sam izbrisao naredbu za ubacivanje na stek.Kada ne upisem nista na onda nema nikakvog prikaza.
Kod je sledeci
#include<string>
#include<vector>
using namespace std;
class Stack{
public:
bool push(const string&);
bool pop(string &elem);
bool peek(string &elem);
bool empty() const{return _stack.empty();}
bool full() const{return _stack.size()==_stack.max_size();}
int size() const{return _stack.size();}
private:
vector<string> _stack;
};
#include"Stack.h"
bool Stack::pop(string &elem){
if (empty()) return false;
elem=_stack.back();
_stack.pop_back();
return true;
}
bool Stack::peek(string &elem){
if(empty())return false;
elem=_stack.back();
return true;
}
bool Stack::push(const string &elem){
if (full()) return false;
_stack.push_back(elem);
return true;
}
int main(){
Stack st;
string str;
while (cin>>str && ! st.full())
st.push(str);
if(st.empty()){
cout<<'\n'<<"Oops nijedan string nije procitan prekidam\n";
return 0;
}
st.peek(str);
if (st.size()==1 && str.empty()) {
cout<<'\n'<<"Oops nijedan sring nije procitan prekidam\n";
return 0;
}
cout<<'\n'<<"procitano je"<<st.size()<<"niski!\n"
<<"niske obrnuti redosledom: \n";
while (st.size())
if (st.pop(str))
cout<<str<< ' ';
cout<<'\n'<<"sada ima"<<st.size()
<<"elemenata na steku!\n";
}