结题报告
2020-02-07 16:00:52来源:博客园 阅读 ()
结题报告
题目:点此
描述:
在某个字符串(长度不超过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()]='\0'; 29 cout << c << "\n" << a << "\n"; 30 } 31 return 0; 32 }View Code
原文链接:https://www.cnblogs.com/eason66-blog/p/P2705.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 2019.3.14解题报告&补题报告 2020-03-22
- 结题报告--hih0CoderP1041 2020-03-17
- 结题报告--P5551洛谷--Chino的树学 2020-03-13
- 结题报告--洛谷P3915 2020-03-13
- 结题报告 2020-03-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash