text: Hey there....Homework time again... As always I dont expect you to do my homework I just need a kick in the right direction... The instructions from my teacher are as follows
  I have the code working except one small prob and I cant find it, I have stared at it for a LONG time and cant figure it out. Here is my code and the output I get from it.I have the code working except one small prob and I cant find it, I have stared at it for a LONG time and cant figure it out. Here is my code and the output I get from it.Code:Program 4 Fall 2006 In Stack.h and Stack.o you have a header file for a Stack class. Note that this is slightly different from the text in that all operations such as Push, Pop etc. begin with an upper case letter. Be sure to note this if you elect to use this header file. There are also some meber functions not implemented in the text or slightly different, such as Print and Full. Using this header file and Stack.o (precompiled version of the Stack class), or implementing the stack class on your onw, write a program to test to see if strings of parentheses, square brackets and curly braces are balanced. When you find a string is unbalanced at some stage, you should print the contents of the stack at the time the error occured and print the original string. For example (() is not balanced []{}([]) is balanced {{([])[]}} is balanced etc. The srings to be tested are in balanced.txt. You may alter this file by adding a $-sign to the end of each string if you would like..Code:Line # Statement ------ --------- 0001 /* 0002 Program: Stack Balance 0003 Programmer: 0004 Date: Nov 7, 2006 0005 Description: Reads information from a file , then checks to see if the 0006 info is balanced and prints accordingly. 0007 */ 0008 0009 #include <iostream> 0010 #include "stackt.h" 0011 #include <fstream> 0012 using namespace std; 0013 0014 const int MAX = 81; 0015 typedef char String[MAX]; 0016 0017 void getline(ifstream &ifs, String &x, int &length); 0018 void checkLine(String x, int length); 0019 0020 // ======================================================== 0021 int main(void) 0022 { 0023 ifstream fin; 0024 fin.open("balanced.txt"); 0025 int a = 5; 0026 while(a >=0) 0027 { 0028 String x; 0029 int length = 0; 0030 0031 0032 getline(fin,x,length); 0033 checkLine(x, length); 0034 a--; 0035 } 0036 cout << endl; 0037 system ("pause"); 0038 return 0; 0039 } 0040 0041 0042 // ======================================================== 0043 void getline(ifstream &ifs, String &x, int &length) 0044 { 0045 int i = 0; 0046 char ch; 0047 0048 ifs.get(ch); 0049 while (i < MAX && (ch != '$')) 0050 { 0051 cout << ch; 0052 x[i] = ch; 0053 i++; 0054 length++; 0055 ifs.get(ch); 0056 } 0057 cout << ch << endl; 0058 return; 0059 } 0060 0061 0062 // ======================================================== 0063 void checkLine(String x, int length) 0064 { 0065 Stack <char> s; 0066 0067 char ch; 0068 char temp; 0069 bool balanced = true; 0070 int i = 0; 0071 0072 ch = x[i]; 0073 while( i < length) 0074 { 0075 if(ch == '(' || ch == '{' || ch == '[') 0076 { 0077 s.push(ch); 0078 } 0079 0080 if(ch == ')' || ch == '}' || ch == ']') 0081 { 0082 if(s.empty()) 0083 { 0084 cout << "Unmatched closing bracket: " << ch << endl; 0085 } 0086 0087 else 0088 { 0089 temp = s.top( ); 0090 s.pop(); 0091 0092 balanced = (ch == ')' && temp == '(') || (ch == '}' && temp == '{') || (ch == ']' && temp == '['); 0093 0094 if(!balanced) 0095 { 0096 cout << "Bad match between: " << temp << " and " << ch <<endl; 0097 } 0098 } 0099 } 0100 0101 i++; 0102 ch = x[i]; 0103 0104 if ((balanced) && (ch == '#') && (!s.empty())) 0105 cout << "Unmatched bracket...String Not balanced" << endl; 0106 } 0107 return; 0108 } --- Compiling balanced.cpp... --- Compilation successful... --- Execution begins...output is program's... ((())){()}[]$ (({})())[]$ {{()}]$ Bad match between: { and ] (()))$ Unmatched closing bracket: ) []{}()({[]()})$ ((())$ sh: pause: command not found --- Execution terminated.
  Also I wrote my own Stack header file instead of using the one that the teacher provided cuz his was all kinda screwy...Here is my Stack Header file
  Thanks in advance for the help... I hope someone can find it for me.Thanks in advance for the help... I hope someone can find it for me.Code:#include <iostream> #ifndef STACKT #define STACKT using namespace std; const int STACK_CAPACITY = 128; template <class StackElement> class Stack { //****** Function Members ****** public: Stack(); //****** Stack Empty ****** bool empty() const; //****** Add a value to the stack ****** void push(const StackElement& value); //****** Display values stored in the stack ****** void display (ostream& out) const; //****** Return value at top of the stack ****** StackElement top() const; //****** Remove value at top of the stack ****** void pop(); //****** Data Members ****** private: StackElement myArray[STACK_CAPACITY]; int myTop; }; // end of class declaration // ---definition of Constructor ****** template <class StackElement> inline Stack<StackElement>::Stack() {myTop = -1;} //****** definition of empty( ) ****** template <class StackElement> bool Stack<StackElement>::empty() const { return (myTop == -1); } //****** definition of push( ) ****** template <class StackElement> void Stack<StackElement>::push(const StackElement& value) { if (myTop < (STACK_CAPACITY - 1)) { ++myTop; myArray[myTop] = value; } else { cerr << "***Stack is full -- can not add new value ***\n"; cerr << "Must increase value of STACK_CAPACITY in stackT.h\n"; } } // push //****** definition of display( ) ****** template <class StackElement> void Stack<StackElement>::display(ostream& out) const { for (int i = myTop; i >= 0; i--) out << myArray[i] << endl; } //****** definition of top( ) ****** template <class StackElement> StackElement Stack<StackElement>::top() const { if (myTop >= 0) return myArray[myTop]; cerr << "*** Stack is empty ***\n"; } //****** definition of pop( ) ****** template <class StackElement> void Stack<StackElement>::pop() { if (myTop >= 0) myTop--; else cerr << "*** Stack is empty -- can not remove a value ***\n"; } #endif