C++ 스택프로그래밍중 에러문제 부탁드립니다.
stack.h 파일
#include
class Stac
{
private:
int top;
char st[256];
public:
void InitializeStack();
void push(char a);
char pop();
bool isFull();
bool isEmpty();
int getTop();
};
------------------------------------------------------------
stack.cpp 파일
#includ
e
#include "stack.h"
using namespace std;
void Stac::InitializeStack()
{
Stac.top = -1;
}
void Stac::push(char a)
{
/* isFull() 연산의 반환값이 false라면
* top(인덱스)을 증가시키고, 증가된 stack[top]에 요소 저장 */
if (!isFull())
{
Stac.st[++Stac.top] = a;
}
/* isFull() 연산의 반환값이 true라면
* 스택이 꽉찼다는 뜻. 메시지 출력 */
else
{
cout
cout
}
}
char Stac::pop()
{
/* isEmpty() 연산의 반환값이 false라면
* stack[top]에 저장된 요소를 반환하고 , top(인덱스)를 감소 */
if (!isEmpty())
{
return st[Stac.top--];
}
/* isEmpty() 연산의 반환값이 true라면
* 스택이 비었다는 뜻. 메시지 출력 */
else
{
return NULL;
}
}
bool Stac::isFull()
{
if(Stac.top == 255)
{
return true;
}
else if
{
return false;
}
}
bool Stac::isEmpty()
{
if(Stac.top == -1)
return true;
else
return false;
}
int Stac::getTop()
{
return Stac.top;
}
------------------------------------------
main.cpp 파일
#include
#include
#in
clude
#include "stack.h"
using namespace std;
int main(void)
{
FILE *fp=NULL;
Stac bracket;
char buffer[256];
char line=0;
int cnt1=0, cnt2=0;
bracket.InitializeStack();
fp=fopen("source_with_err.txt","r");
if(fp==NULL)
cout
else
cout
while(fgets(buffer,256,fp))
{
line++;
if(strstr(buffer,"{"))
{
bracket.push(line);
cnt1++;
}
else if(strstr(buffer,"}"))
{
if(!bracket.isEmpty())
{
bracket.pop();
cnt2++;
}
else
{
break;
}
}
}
return 0;
}
입니다. 문제는 텍스트파일에 소스를 읽어들여 괄호갯수가 틀리면 그 괄호가 있는줄을 출력하는데
지금 만들고있던도중 중간에 에러를 잡으려고 프로그램을 돌려봤으나 어디에서 에러가 생긴건지 도저히 찾을수 없어 이렇게 부탁드립니다.
댓글 달기