1樓:物理公司的
#include
#include
#include
using namespace std;
int main()
while(!number.empty())for(int i=0; i
括號配對問題,有一行**看不懂,這是c++版的,希望一個c語言版的,跪求。**等。。。。
2樓:
那句看不懂?
授人以魚不如授人以漁!
#include "stdafx.h" //這句沒用,不過如果你是在vc中用嚮導生成的**那就留著吧。
#include //改:標準化後的c++使用iostream、c語言則使用stdio.h,這句可以刪了
#include
#include //好像你也沒用到什麼標準庫函式
using namespace std; //c語言沒有名稱空間的概念,這句也可以刪了。
void f(char *pstr) //函式的形參接受一個字串實參,指標pstr將用於遍歷該字串
//如果遇到了'else //當遇到了')'右括號時,棧指標向棧底(瓶底)移動一個單位,並判斷該處所暫存的字元是不是對應的'('左括號,如果不是就表示兩個括號不匹配,置狀態標記為0(flag==0將導致for迴圈體終止)。下同。
case']':if(*--pstack != '[')else
case'}':if(*--pstack != 'else
default:; //本句可以有也可以刪除,但是建議保留。}}
if(flag == 0 || pstack != stack) //如果括號不匹配或者棧指標沒有指向棧頂(原因可能是左右括號數量不一致)則輸出不相匹配的括號,並提示出錯。
else
}int main()
編寫一個c++程式,解決括號匹配問題,即匹配一個字串中的左右括號.
3樓:匿名使用者
#include
using namespace std;
#define stack_int_size 100#define stackincrement 10#define ok 1
#define error 0
typedef char selemtype;
typedef int status;
typedef struct
sqstack;
<<"輸入結束,下面將判斷括號是否匹配!"<
一道關於「括號配對問題」的c++程式設計題 沒看懂答案(涉及到容器)
4樓:匿名使用者
這樣的匹配是用了棧的思想。
if( vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2))
查一下ascii碼的表,你會發現
(和)的碼值差1
[和],碼值差2
()與{}的值差得很遠
vec.back()-1 == *(vec.end()-2是用vec中的最後一個元素值減1和vec中倒數第二個元素比較,如果相等,說明這是(),配對成功,讓配對元素出棧,繼續檢查下面的字元
同理,vec.back()-2 == *(vec.end()-2)是用vec中的最後一個元素值減2和vec中倒數第二個元素比較,如果相等,說明這是或{},配對成功,讓配對元素出棧,繼續檢查下面的字元
題 目 一:括號配對檢查程式 對輸入的一段c或者c++**(只要求其中一種),檢查各種括號是否配對,以及配對 10
5樓:匿名使用者
設計原理:
主要是利用了棧的結構,在表示式的輸入過程中實現對括號是否匹配的判斷。根據其括號的原則:小括號之中不能含有大括號或中括號,中括號中不能含有大括號。
再由緊密性,左邊括號和右邊括號是緊密相連的。否則判斷為錯。 其操作為:
每輸入一個字元打一下回車,若輸入括號順序錯誤則跳出,並顯示錯誤!
附:#include
#define max 100
#define true 1
#define false 0
#define e a
typedef struct transition /*建立一個棧*/
sqstack;
sqstack bt;
int emptysqstack(sqstack bt) /*判棧空*/
void pushsqstack(sqstack bt,char sh) /*入棧*/
bt.top++;
bt.sq[bt.top]=sh;
}void popsqstack(sqstack bt) /*出棧*/
sh=bt.sq[bt.top];
bt.top--;
return sh;
}search(sqstack bt) /*查詢括號是否匹配*/
searcha(bt,c);
searchb(bt,c);
searchc(bt,c);
}searcha(sqstack bt,char c) /*查詢小括號是否匹配*/
')if(c=='(')
printf("right\n");
else if(c=='['||c==']'||c=='')
printf("wrong\n");} }
searchb(sqstack bt,char c) /*查詢中括號是否匹配*/
')if(c==')'||c=='')
printf("wrong\n");
else if(c=='(')
searcha(bt,c);
else if(c==']')
printf("right\n");
else
printf("wrong\n");
} searchc(sqstack bt,char c) /*查詢大括號是否匹配*/
if(c==']'||c==')')
printf("wrong\n");
else if(c=='[')
searchb(bt,c);
else if(c=='(')
searcha(bt,c);
else if(c=='}')
printf("right\n");
else
printf("wrong\n");
} main()
else
exit(0);}
求多項式中括號匹配演算法~~(有關資料結構,c++實現)
6樓:
括號可以用棧來匹配啊, 資料結構中的運算子優先法就是用棧實現的,
左右括號都是運算子,規定(優先順序最底,要入棧到運算子棧, 其他運算子優先都要高於( 但低於),其他運算子之間的優先關係暫且忽略不說,也就是當讀取到) 的時候, 括號內運算一定會結束並得出一個結果進入到運算元棧(由於 ) 的優先順序比其他所有運算子都高,其他運算子要出棧運算,並且把結果入到運算元棧),然後就是檢查運算元棧棧頂是否是左括號,如果是在左括號出棧,這樣左右括號就一起消掉,如果不是,則報錯,你要檢查你的運算子優先表的定義,因為根據定義,到讀取到右括號的時候,括號內的運算會結束並得出結果, 空括號不影響計算, 只是沒有運算元入棧而已,而且可以巢狀括號 , 規定好了優先順序,可以實現多種不同優先順序的括號的混合運算
c++裡面的表示式括號匹配問題,求高手看看下面的****有問題
對輸入的一段c或者c++**(只要求其中一種),檢查各種括號是否配對,以及配對的情況。 5
7樓:中華小逗比
#include
#include
char a[10010];
int main()
}if(top==-1)
printf("yes\n");
else
printf("no\n");
}return 0;}
括號匹配問題c++,需要具體配對~實在不想寫給個思路也行。
8樓:匿名使用者
用stack資料結構, ( push, ) pop, 記錄位置等資料
9樓:阿彌陀佛
用棧來儲存左括號啊,遇見一個左括號就進棧,遇見一個右括號就退棧啊,就與退棧出來的值配對了。
關於c 的問題
有區別 char str 定義的是一個指標 可以改變指標的方向,即str指向的地址的是可以改變的 char str 定義的是一個字元陣列,可以改變陣列裡面字元的值,但是str的地址是不變的 char str 這個是不合法的,要指明大小。指標是不需要大小的。即後分配。char str 10 str本身...
關於c語言小問題,關於C語言一個小問題
if語句不能這樣用,當需要判斷多個條件時,需要各自用括號括起來,再用邏輯與符號 或者邏輯或符 連線。貼段 給你參考,功能是a,b,c三者相等時輸出case 1,我用gcc編譯器驗證過了。include int main void else printf n n return 0 c語言一個小問題。如...
關於有效數字運演算法則問題,關於有效數字運演算法則問題
整數應當看做無限位有效數字。與整數相乘,有效數字位數不減少。關於有效數字運算規則 加減法 在加減法運算中,保留有效數字的以小數點後位數最小的為準,即以絕對誤差最大的為準,例如 0.0121 25.64 1.05782 正確計算 不正確計算 0.01 0.0121 25.64 25.64 1.06 1...