배열을 이용한 스택 구현 c++ (초보프로그래머입니다.)

초보 프로그래머 입니다.조건은
입력
첫번째 줄에 명령어의 수 N (1 ≤ N ≤ 1 0 0, 000) 이 주어진다 두 번째 줄부터 N 개의 줄에는 명령어가 하
나씩 주어진다
출력
출력해야하는 명령어가 주어질 때마다 그 결과를 한 줄씩 출력한다.
얘를들어 push 10을 하면 10이 출력되고
pop을 하면 제거되는 top을 출력하는 구조입니다.
예외처리 하는 부분이랑 str과 X를 입력 받았을때 pop과 print는 동작을 안하는데
어떻게 구현해야할지 감이 오지 않습니다.
코드를 열심히 짜봤는데 부족하지만 조언 부탁드립니다.

pushNum > 100000 && pushNum < 0…?
한번만 다시 생각해 보십시오…

stack 클래스에서는 데이터만 다루고, 출력 부분은 클래스 밖에서 하는게 OOP 원칙에 맞겠죠. 오버플로/언더플로 예외는 std::optional같은걸루 하고.

그리고 제발 using namespace std좀 쓰지 마세요. 이름이 겹치지 않는다는 보장이 있습니까? 마침 지금 stack 헤더에 std::stack이 있는데…

까먹고 안지우신 거겠지만 stack 클래스 안에 str 지워주시고, stack::print에서 int ifor 안에 넣어주세요.

생성자에서 top = -1보단 그냥 처음부터 -1로 초기화해 주세요.

반복문에서 i++ 대신 ++i를 사용해 주세요. 지금 당장 같은 성능이라 해도 꼭 들여야 하는 습관입니다.

계속 입력받는 변수의 이름에 X는 어울리지 않습니다. 정답은 없지만, C++ 네이밍 컨벤션 찾아보세요.

1 Like

답변 감사합니다 고쳐보겠습니다.

스택이 비어있는지 꽉차있는지 확인하는 함수를 만드는건 어떨까요??