c语言 想要输入一个括号,编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号….
编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
编写一个C++程式,解决括号匹配问题,即匹配一个字串中的左右括号.
#include using namespace std;#define STACK_INT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;typedef struct { SElemType *base; SElemType *; int stacksize;}SQStack;Status INitStack(SQStack &S){ S.base=new SElemType[STACK_INT_SIZE]; if(!S.base) { cout<=S.stacksize) { S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) { cout<>e; if(e!='('&&e!=')'&&e!='['&&e!=']'&&e!='{'&&e!='}') { cout<
如何用c语言编写一个括号匹配程式
#include
void main()
{
int Token = 0;
char s[50];
bool IsRight = false;
cout<
cin>>s;
for(int i = 0;s[i]!='0';i++)
{
if(s[i]=='('){
Token++;
}
if(s[i]==')'){
Token–;
if(Token<0)
break;
}
}
if(Token!=0)
cout<
else
cout<
cout<
}
c++栈的问题,写个程式解决括号的匹配问题
int Match(char *exp,int n)
{
int i=0;
char e;
SqStack *st;
InitStack(st);
while(i
{
if(exp[i]=='(')
push(st,exp[i]);
else if(exp[i]==')')
{
if(GetTop(st,e)==1)
{
if(e!='(')
return 0;
else
Pop(st,e);
}
else
return 0;
}
i++;
}
if(StackEmpty(st)==1)
return 1;
else
return 0;
}
急!括号匹配问题
你用了exit和malloc函式
需要新增标头档案
#include
试过了,新增标头档案后没有编译错误。
函式的 栈引数 都改成 栈指标引数
如:
int initstack(sqstack S);
改成:
int initstack(sqstack *S);
函式体也要做相应修改。
c++ 找错误 (括号匹配问题)
#include
#include
const int maxsize=100;最大元素个数
typedef char Datatype;
class seqstack
{
int ;
Datatype *s;
public:
seqstack();建构函式
~seqstack();解构函式
void push(Datatype x);
void match(char *k);
};
seqstack temp;
seqstack::seqstack()
{
=0;
s=new Datatype[maxsize];
}
seqstack::~seqstack()
{
delete []s;
}
void seqstack::push(Datatype x)
{
if(==maxsize)
{
cout<
exit(0);
}
else
{
s[]=x;
}
}
bool ma(char a,char b)
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
void seqstack::match(char *k)
{
int u,v;
for(int i=0;k[i]!='0';i++)
{
if(k[i]=='('||')'||'['||']'||'{'||'}')
{
temp.push(k[i]);
++;
}
}
if(%2==1)
{
cout<
}
else
{
u=/2;
v=u+1;
while(u!=-1)
{
if(ma(s[u],s[v]))
{
u–;
v++;
}
else
{
cout<
break;
}
}
if(u==-1)
cout<
}
}
void main()
{
char p[10];
cout<
cin>>p;
temp.match(p);
} 只是修改编译错误吗? 我改好了 ,还修改了个死回圈 ,你少了一边大括号,还有case那加上了break
c++ 如何在档案中匹配一个字串
如果档案不是太大(比你当前的可用剩余记忆体小),且档案中不包含“0”这样的位元组,直接把档案用一个缓冲调进记忆体,然后用字串搜寻函式搜就是了;
如果档案确实太大,或者档案中可能包含“0”这样的位元组,那么你需要自己编写模式匹配函式(就是与字串搜寻函式类似功能的函式,网上有类似的C++原始码,但功能还不够)。
对含0资料的适应比较简单,搜寻函式只要额外加两个缓冲区资料长度的引数传进去就行(代替以0结尾的字串处理机制)——一个主缓冲长度,一个子串长度。
而跨缓冲区的搜寻比较麻烦,因为搜寻字很可能跨在两个相邻缓冲之间,这时搜寻函式需要返回两个资讯:一是搜寻到的子串位置,二是本缓冲区内匹配了多少位元组的子串(完全匹配时就是匹配了整个子串的长度);如果需要多次搜寻子串在缓冲中的所有位置,则还需要把搜寻起始位置做引数传进搜寻函式。当然,这时子串在缓冲中搜索到的各位置必须转换为档案的绝对座标才行。
跨缓冲区的搜寻,上一缓冲的最后搜寻结果(位置、已匹配长度)要带进下一缓冲的搜寻,这些必要资讯也要传进搜寻函式,因此这是个复杂而引数众多的函式。
括号匹配问题(pascal)
const
op1='{[
op2='}]>)';
var
s:array[1..1000] of char;
,p1,p2,l,i:longint;
st:string;
ch:char;bj:boolean;
begin
readln(st);
:=0;l:=length(st);
bj:=true;
for i:=1 to l do begin
ch:=st[i];
if pos(ch,op1)<>0 then begin
inc();s[]:=ch;
end
else if pos(ch,op2)<>0 then begin
if =0 then begin bj:=false;break;end
else begin
p2:=pos(ch,op2);
ch:=s[];
p1:=pos(ch,op1);
if p1=p2 then dec()
else begin bj:=false;break;end;
end;
end;
end;
if =0 and bj then writeln('yes')
else writeln('no');
end.
C语言括号匹配问题
用堆叠解决。
C圆括号匹配程式问题
这程式码也太多了。。LZ你可以到我空间里参考“括号匹配”这篇文章,之前给一个提问者写的。不一定是你想要的功能,但你可以按那个思路来改。
帮忙改一下这个C++括号匹配问题
#include
#include
using namespace std;
bool invalid(char* s)
{
stack st;
st.empty();
while(*s!='0')
{
if(*s == '['|| *s == '(')
st.push(*s);
else
{
if(*s == ']')
{
if(st.() != '[')
{
return true;
}
else
st.pop();
}
if(*s == ')')
{
if(st.()!='(')
{
return true;
}
else
st.pop();
}
}
s++;
}
return !st.empty();
}
int main()
{
int i;
char a[50];
cin>>a;
if(invalid(a))
cout<
else
cout<
cin>>i;
return 0;
}
分页:
1
23
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/97325.html