zoukankan      html  css  js  c++  java
  • 结题报告

    题目:点此

    描述:

    在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.

    思路:

    定义一个数组存要输出的字符($,?, (空格))

    按常规的括号匹配问题去做(遇到左括号入栈,遇到右括号出栈),只是遇到右括号不匹配时数组对应位置赋为?,左括号不匹配时对应位置赋为$,匹配的对应位置赋为空格。最后输出原字符串后输出此字符数组即可。

    犯的错误:

    EOF(-1)仅限用于scanf字符数组,不能用于字符串,否则

    收获:

    EOF(-1)不能用于字符串,读入字符串可以这样:

    while(getline(cin,c))//string c

    代码:

     1 #include <stack>
     2 #include <iostream>
     3 using namespace std;
     4 char a[101];
     5 stack <int> b;
     6 string c;
     7 int main(){
     8     while(getline(cin,c)){
     9         for(int i=0;i<c.length();i++){
    10             a[i]=' ';
    11             if(c[i]=='('){
    12                 b.push(i);
    13             }
    14             if(c[i]==')'){
    15                 if(b.empty()){
    16                     a[i]='?';
    17                 }
    18                 else{
    19                     b.pop();
    20                 }
    21             }
    22         }
    23         while(!b.empty()){
    24             int i=b.top();
    25             b.pop();
    26             a[i]='$';
    27         }
    28         a[c.length()]='';
    29         cout << c << "
    " << a << "
    ";
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    powerpc调试工具的使用
    微软的开发工具是我见过比较难用的
    Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)
    静态工厂方法和实例工厂方法
    理解.NET Framework
    .NET相关的概念简介
    二、文档工具 swagger
    Java Web学习(二)数据加密
    Java Web学习(一)Web基础
    Oracle学习(十二)标量函数
  • 原文地址:https://www.cnblogs.com/eason66-blog/p/P2705.html
Copyright © 2011-2022 走看看