c++ 괄호 검사 괄호 짝 수 출력 오류

c++ 괄호 검사 괄호 짝 수 출력 오류

작성일 2024.04.05댓글 1건
    게시물 수정 , 삭제는 로그인 필요

입력되는 문자열에 대해 소괄호“()”, 중괄호“{}”, 대괄호“[]”의 짝의 개수, 입력받은 라인 수를 출력해야 하는 프로그램을 작성했습니다.

{(
]}
EOF
이렇게 입력했을 때 

Error, Line_count : 2, bracket_count : 0 이 문장이 출력이 되어야하는데

Error, Line_count : 1, bracket_count : 0

이렇게 출력이 됩니다. 

어떻게 해야  위의 입력을 넣었을 때 라인 수가 2가 나올지 도저히 모르겠습니다..

위의 출력대로 맞추면 다른 입력 예제들의 출력이 오류가 납니다.

아래는 제가 짠 코드입니다. 

#include <iostream>
#include <string>
#include <stack>

using namespace std;

bool checkMatching(const string& Str) {
    stack<char> brackets;
    int line_count = 0;
    int bracket_count = 0;

    for (char ch : Str) {
        if (ch == '\n') {
            line_count++;
        } else if (ch == '(' || ch == '{' || ch == '[' || ch == ')' || ch == '}' || ch == ']') {
            bracket_count++;
        }

        if (ch == '(' || ch == '{' || ch == '[') {
            brackets.push(ch);
        } else if (ch == ')' || ch == '}' || ch == ']') {
            if (brackets.empty()) {
                cout << "Error, Line_count : " << line_count << ", bracket_count : 0" << endl;
                return false;
            }

            char top = brackets.top();
            if ((ch == ')' && top == '(') || (ch == '}' && top == '{') || (ch == ']' && top == '[')) {
                brackets.pop();
            } else {
                cout << "Error, Line_count : " << line_count << ", bracket_count : 0" << endl;
                return false;
            }
        }
    }

    if (!brackets.empty()) {
        cout << "Error, Line_count : " << line_count << ", bracket_count : 0" << endl;
        return false;
    }

    cout << "OK, Line_count : " << line_count << ", bracket_count : " << (bracket_count / 2) << endl;
    return true;
}

int main() {
    string Str, temp;
    while (true) {
        getline(cin, temp);
        if (temp == "EOF") break;
        Str.append(temp);
        Str.append("\n");
    }

    checkMatching(Str);

    return 0;
}


#c++ 괄호 짝 맞추기 #c++ 괄호 #c++ 괄호 검사 프로그램 #c++ 괄호 출력 #c++ 괄호검사 #c++ 괄호 초기화 #dev c++ 괄호 자동 #올바른 괄호 c++ #잃어버린 괄호 c++ #괄호의 값 c++

profile_image 익명 작성일 -

int line_count = 1;

C++ 처리 오류 질문

... 출력하지 않고 바로 목록으로 돌아가는 현상이 일어납니다. 코드 상에 오류가... 기존 코드가 길이 검사를 하게 되어 있으니...

파이썬 함수 질문 11-27-2-16, 29, 48

... {}".format(y)): # === 오류를 발생시키고 & 음수로 나눌 없다는 메시지를 출력하고 # === (6행부터... 괄호 안에 음수로 나눌 없다는 메시지가 써있는...

코딩 스택 문제(c++)

... 알 있습니다. 이 문제를 맞추기 위해서는... 쪼개서 괄호인지 아닌지 비교 { char c=sentence... yes 출력. 반대는 no { cout << "yes" << endl; } else...

C++ 데이터 처리 질문

... 때문에 오류가 나는지 알려주실 있나요? 예시) 정상 출력 이름 생년월일 전화번호... 모든 입력에서 공백 문자를 검사하거나...

(급급)c++ 스택 실행 오류

... return data[top]; } void display() { cout << "[스택 항목의 ... /* 파일 괄호 검사*/ if (ch == '[' || ch == '(' || ch == '{') { if (s_q == false...

괄호안 문자 제외하기

... 0; } 괄호짝은 제대로 출력이 되는데 안에문자가 제외가... 문법적 오류 -> 이 코드를 짠 분의 의도는 알것 같습니다. 우선 '('를 만나면 최초의...