題目:試編寫一個判別運算式中開、閉括弧是否合法配對出現的演算法。
1.需求分析
對於使用者輸入的字串,判斷其中的括弧是否匹配。
輸入:含有括弧的字串
輸出:字串中的括弧是否匹配
2.概要設計
對於每一種括弧,使用計數器進行累加,若是左括弧,累加器自加;若是右括弧,累加器自減。
3.詳細設計
流程圖如下:
4.調試分析
本例使用了計數器累加的方法實現了括弧是否匹配的判斷。
更為先進的方法是使用棧實現。若為左括弧,執行push操作;若為右括弧,執行pop操作。
5.使用說明
運行程式,輸入字串,斷行符號,查看結果。
6.測試結果
1)
測試
a)
{www}[ee]
b)
匹配
2)
測試
a)
wewwerre
b)
匹配
3)
測試
a)
{d<df>g}hv(fg)
b)
匹配
4)
Ssd
a)
{<}
b)
不匹配
7.附錄
來源程式檔案清單。
#include "stdafx.h"<br />#include <iostream><br />#include <string><br />using namespace std;</p><p>void panDuan(string str)<br />{<br />char c;<br />int huaCount=0,yuanCount=0,jianCount=0,fangCount=0;</p><p>for (int i=0;i<str.length();i++)<br />{<br />c=str[i];<br />switch (c)<br />{<br />case '{':<br />huaCount++;<br />break;<br />case '}':<br />huaCount--;<br />break;<br />case '(':<br />yuanCount++;<br />break;<br />case ')':<br />yuanCount--;<br />break;<br />case '<':<br />jianCount++;<br />break;<br />case'>':<br />jianCount--;<br />break;;<br />case '[':<br />fangCount++;<br />break;<br />case ']':<br />fangCount--;<br />break;<br />default:<br />break;<br />}<br />}<br />if (huaCount==0&&yuanCount==0&&jianCount==0&&fangCount==0)<br />{<br />cout<<"匹配/n";<br />}<br />else<br />{<br />cout<<"不匹配/n";<br />}</p><p>}<br />int _tmain(int argc, _TCHAR* argv[])<br />{<br />string str;<br />cout<<"請輸入含有{,},(,),<,>,[,]的字串/n";<br />cin>>str;</p><p>panDuan(str);</p><p>system("pause");<br />return 0;<br />}<br />