55 Includes
66==============================================================================*/
77#include " data.hpp"
8- #include " problem .hpp"
8+ #include " stackAlgo .hpp"
99
1010/* ==============================================================================
1111 Class : abstract, template (T context, D datas)
1212 Extensions :
1313 Aliases :
1414 Friends ->
15- <- Problem
15+ <- StackAlgo
1616==============================================================================*/
17- template <class T , class D > class CompareStacks : public Problem <T, D> {
17+ template <class T , class D > class CompareStacks : public StackAlgo <T, D> {
1818public:
1919 // Members functions
2020 CompareStacks<T, D>(std::string fileName);
@@ -24,7 +24,7 @@ template <class T, class D> class CompareStacks : public Problem<T, D> {
2424
2525 // IO
2626 void printCompare () {
27- std::string str = Problem <T, D>::toString ();
27+ std::string str = StackAlgo <T, D>::toString ();
2828 str += " \n " + (*mNormalStack ).toString ();
2929 std::cout << str << std::endl;
3030 }
@@ -54,68 +54,68 @@ template <class T, class D> class CompareStacks : public Problem<T, D> {
5454
5555template <class T , class D >
5656CompareStacks<T, D>::CompareStacks(std::string fileName)
57- : Problem <T, D>(fileName), mNormalStack (new NormalStack<T, D>()) {}
57+ : StackAlgo <T, D>(fileName), mNormalStack (new NormalStack<T, D>()) {}
5858
5959/* ==============================================================================
6060 Stack Functions: run, push, pop, top
6161==============================================================================*/
6262template <class T , class D > Data<T, D> CompareStacks<T, D>::popCompare() {
63- return Problem <T, D>::mStack ->pop (*this );
63+ return StackAlgo <T, D>::mStack ->pop (*this );
6464}
6565
6666template <class T , class D > void CompareStacks<T, D>::runCompare(int buffer) {
6767 try {
68- Problem <T, D>::initStackIntern ();
69- while ((Problem <T, D>::mInput .good ())) {
70- std::streampos position = Problem <T, D>::mInput .tellg ();
71- (*Problem <T, D>::mStack ).setPosition (position);
68+ StackAlgo <T, D>::initStackIntern ();
69+ while ((StackAlgo <T, D>::mInput .good ())) {
70+ std::streampos position = StackAlgo <T, D>::mInput .tellg ();
71+ (*StackAlgo <T, D>::mStack ).setPosition (position);
7272 for (int i = 1 ; i <= buffer; i++) {
73- bool bIndex = Problem <T, D>::top (i).mIndex == mNormalStack ->top (i).mIndex ;
74- bool bData = Problem <T, D>::top (i).mData == mNormalStack ->top (i).mData ;
73+ bool bIndex = StackAlgo <T, D>::top (i).mIndex == mNormalStack ->top (i).mIndex ;
74+ bool bData = StackAlgo <T, D>::top (i).mData == mNormalStack ->top (i).mData ;
7575 if (!bIndex || !bData) {
76- Problem <T, D>::println ();
76+ StackAlgo <T, D>::println ();
7777 std::cout << mNormalStack ->toString () << std::endl;
7878 throw " The top $(i)st elements are different" ;
7979 }
8080 }
81- std::vector<std::string> line = Problem <T, D>::readLine ();
81+ std::vector<std::string> line = StackAlgo <T, D>::readLine ();
8282 if ((line.front () == " -1" ) || (line.front () == " " )) {
8383 break ;
8484 }
8585 D data = readInput (line);
86- Problem <T, D>::mIndex ++;
87- if ((*Problem <T, D>::mStack ).empty () != mNormalStack ->empty ()) {
88- (*Problem <T, D>::mStack ).empty ();
89- Problem <T, D>::println ();
86+ StackAlgo <T, D>::mIndex ++;
87+ if ((*StackAlgo <T, D>::mStack ).empty () != mNormalStack ->empty ()) {
88+ (*StackAlgo <T, D>::mStack ).empty ();
89+ StackAlgo <T, D>::println ();
9090 std::cout << mNormalStack ->toString () << std::endl;
91- (*Problem <T, D>::mStack ).empty ();
91+ (*StackAlgo <T, D>::mStack ).empty ();
9292 throw " One stack is empty and not the other" ;
9393 }
94- while ((!(Problem <T, D>::emptystack ())) && (popCondition (data))) {
95- Data<T, D> elt = Problem <T, D>::pop ();
94+ while ((!(StackAlgo <T, D>::emptystack ())) && (popCondition (data))) {
95+ Data<T, D> elt = StackAlgo <T, D>::pop ();
9696 Data<T, D> eltNormal = mNormalStack ->pop ();
9797 popAction (elt);
9898 bool bIndex = elt.mIndex == eltNormal.mIndex ;
9999 bool bData = elt.mData == eltNormal.mData ;
100100 if (!bIndex || !bData) {
101- Problem <T, D>::println ();
102- // std::cout << *Problem <T, D>::mContext << std::endl;
101+ StackAlgo <T, D>::println ();
102+ // std::cout << *StackAlgo <T, D>::mContext << std::endl;
103103 std::cout << mNormalStack ->toString () << std::endl;
104104 throw " The two elements popped are different" ;
105105 }
106106 }
107107 if (pushCondition (data)) {
108- Data<T, D> elt (Problem <T, D>::mIndex , data);
108+ Data<T, D> elt (StackAlgo <T, D>::mIndex , data);
109109 pushAction (elt);
110- Problem <T, D>::push (elt);
110+ StackAlgo <T, D>::push (elt);
111111 mNormalStack ->push (elt);
112112 }
113- if (Problem <T, D>::mStack ->getBufferSize () > 0 ) {
113+ if (StackAlgo <T, D>::mStack ->getBufferSize () > 0 ) {
114114 std::cout << " Is it working" << std::endl;
115- for (int k = 1 ; k <= Problem <T, D>::mStack ->getBufferSize (); k++) {
116- if (Problem <T, D>::mStack ->top (k).mIndex == mNormalStack ->top (k).mIndex ) {
117- Problem <T, D>::println ();
118- // std::cout << *Problem <T, D>::mContext << std::endl;
115+ for (int k = 1 ; k <= StackAlgo <T, D>::mStack ->getBufferSize (); k++) {
116+ if (StackAlgo <T, D>::mStack ->top (k).mIndex == mNormalStack ->top (k).mIndex ) {
117+ StackAlgo <T, D>::println ();
118+ // std::cout << *StackAlgo <T, D>::mContext << std::endl;
119119 std::cout << mNormalStack ->toString () << std::endl;
120120 throw " The two elements at the k = $(k) position are different" ;
121121 }
@@ -129,14 +129,14 @@ template <class T, class D> void CompareStacks<T, D>::runCompare(int buffer) {
129129
130130template <class T , class D > void CompareStacks<T, D>::readPush(int iter) {
131131 for (int i = 0 ; i < iter; i++) {
132- std::streampos position = Problem <T, D>::mInput .tellg ();
133- Problem <T, D>::mStack ->setPosition (position);
134- std::vector<std::string> line = Problem <T, D>::readLine ();
132+ std::streampos position = StackAlgo <T, D>::mInput .tellg ();
133+ StackAlgo <T, D>::mStack ->setPosition (position);
134+ std::vector<std::string> line = StackAlgo <T, D>::readLine ();
135135 D data = readInput (line);
136- Problem <T, D>::mIndex ++;
137- Data<T, D> elt (Problem <T, D>::mIndex , data);
136+ StackAlgo <T, D>::mIndex ++;
137+ Data<T, D> elt (StackAlgo <T, D>::mIndex , data);
138138 pushAction (elt);
139- Problem <T, D>::push (elt);
139+ StackAlgo <T, D>::push (elt);
140140 mNormalStack ->push (elt);
141141 }
142142}
0 commit comments