내가 이겼다.
멍청한 기계공. 감히 사람을 때려
..
……
모든 작업이 완료된 후 !(st.isEmpty())는 ~(st.isEmpty())…로 작성됩니다.
내가 뭘 잘못했는지 생각하며 3시간을 보냈다.
마침내 오류가 발생했습니다.
눈물이 났어요…
//CharArrayStack.h
#ifndef DATA_STRUCTURE_ARRAYSTACK_H
#define DATA_STRUCTURE_ARRAYSTACK_H
#include <iostream>
using namespace std;
const int MAX_ARRAY_SIZE = 50;
class CharArrayStack{
private :
int top;
char data(MAX_ARRAY_SIZE);
public :
CharArrayStack();
~CharArrayStack();
void push(char);
char pop();
char peek();
bool isEmpty();
bool isFull();
void display();
};
#endif //DATA_STRUCTURE_ARRAYSTACK_H
//CharArrayStack.cpp
#include "CharArrayStack.h"
#include <iostream>
using namespace std;
CharArrayStack::CharArrayStack(){
this->top = -1;
}
CharArrayStack::~CharArrayStack(){}
void CharArrayStack::push(char a){
data(++top) = a;
}
char CharArrayStack::pop(){
return data(top--);
}
char CharArrayStack::peek(){
return data(top);
}
bool CharArrayStack::isEmpty(){
return (top==-1);
}
bool CharArrayStack::isFull(){
return (top == MAX_ARRAY_SIZE);
}
void CharArrayStack::display(){
for (int i = 0; i <= top ; i++) {
cout << data(i) << " ";
}
cout << endl;
}
bool checkMatching(string s){
CharArrayStack st;
int strLength = s.length();
for (int i = 0; i < strLength; i++){
if ((s.at(i) == '(') || (s(i) == '{') || (s(i) == '('))
st.push(s(i));
else if (s.at(i) == ')'){
if ((st.isEmpty()) || (st.pop() != '(')){
cout << "error occurred : " << s.at(i) << endl;
return false;
}
}
else if (s.at(i) == '}'){
if ((st.isEmpty()) || (st.pop() != '{')){
cout << "error occurred : " << s.at(i) << endl;
return false;
}
}
else if (s.at(i) == ')'){
if ((st.isEmpty()) || (st.pop() != '(')){
cout << "error occurred : " << s.at(i) << endl;
return false;
}
}
}
st.display();
if (!(st.isEmpty())){
cout << "stack isn't empty" << endl;
return false;
}
else{
cout << "no error" << endl;
return true;
}
}
int main(){
string s;
cout << "enter string:";
cin >> s;
cout << checkMatching(s);
return 0;
}