zoukankan      html  css  js  c++  java
  • 表达式括号匹配配对判断问题

     1 #include <iostream>
     2 #include <string>
     3 #include <cstdio>
     4 #include <stack>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n;
    10     string ch;
    11     cout << "输入表达式数目: ";
    12     cin >> n;
    13     while (n--) {
    14         stack<char> check;
    15         int flag = 0;
    16         cout << "输入表达式: ";
    17         cin >> ch;
    18         int len = ch.size();
    19         int i = 0;
    20         for (i = 0; i < len; i++) {
    21             //"("、")"、"["、"]"、"{"、"}"、"<"、">"
    22             if (ch[i] == '(' || ch[i] == '[' || ch[i] == '{' || ch[i] == '<') {
    23                 check.push(ch[i]); flag = 0; //左括号直接进栈
    24             }
    25             else if (ch[i] == ')' || ch[i] == ']' || ch[i] == '}' || ch[i] == '>') {
    26                 if (check.empty()) {          //遇到右括号时,栈顶为空则为不匹配
    27                     flag = 1; break;
    28                 }
    29                 else {
    30                     if ((check.top() == '(' && ch[i] == ')') || (check.top() == '[' && ch[i] == ']') ||
    31                         (check.top() == '{' && ch[i] == '}') || (check.top() == '<' && ch[i] == '>')) {
    32                         flag = 0; check.pop();     //出栈左括号,继续判断
    33                     }
    34                     else {                         //如果左右不匹配,则退出判断
    35                         flag = 1; break;           
    36                     }
    37                 }
    38             }
    39         }
    40         if (check.empty() && !flag) { //如果栈为空,且没有右括号出现--匹配
    41             printf("匹配
    ");
    42         }
    43         else if (!check.empty() && !flag){
    44             cout << "不匹配: 多左括号" << check.top() << endl;
    45         }
    46         else if (flag && check.empty()) {
    47             cout << "不匹配: 多右括号" << ch[i] << endl;
    48         }
    49         else if (flag && !check.empty()) {
    50             switch(ch[i]) {
    51                 case ')' : cout << "不匹配: " << check.top() 
    52                                 << "" << ch[i] << "匹配错
    "; break;
    53                 case ']' : cout << "不匹配: " << check.top() 
    54                                 << "" << ch[i] << "匹配错
    "; break;
    55                 case '}' : cout << "不匹配: " << check.top() 
    56                                 << "" << ch[i] << "匹配错
    "; break;
    57                 case '>' : cout << "不匹配: " << check.top() 
    58                                 << "" << ch[i] << "匹配错
    "; break;
    59                 default : cout << "不匹配
    "; break;
    60             }
    61         } 
    62         cout << endl; 
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    MFC生成的exe程序不能在其他电脑上运行怎么办
    MFC开发软件支持多语言且同时支持xp和win7操作系统
    MFC创建模态对话框与非模态对话框
    如何定位BAD_ACCESS
    iOS中几种数据持久化方案
    iOS NSString相关问题
    SPU
    WIKI
    Mac怎么快速创建便签和发送附件的邮件
    利用你的Mission Control--设置快速回到桌面等操作
  • 原文地址:https://www.cnblogs.com/douzujun/p/5932257.html
Copyright © 2011-2022 走看看