梦殇国际

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 刷粉
月光下载 云刷粉软件 云刷粉网页 水贴机电脑版 安卓软件 梦殇导航(教程集合) 有任何问题请点击提问
查看: 905|回复: 21
打印 上一主题 下一主题

[其他] 表达式求值问题,求帮忙,新手求罩!!!!

[复制链接]

7

帖子

0

积分

1025

TBS

UID
7434
积分
0
TBS
1025
智商
1012
节操
1011
海贝
0
阅读权限
10
在线时间
1 小时
注册时间
2014-3-22
最后登录
2014-4-3
跳转到指定楼层
1
发表于 2014-4-2 22:48:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
        char *top;
        char *base;
        int stacksize;
}Sqstack;
void Initstack(Sqstack *S)
{
        S->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
        if(!S->base)
                exit(-1);
        S->top=S->base;
        S->stacksize=STACK_INIT_SIZE;
}
int StackEmpty(Sqstack *S)
{
        if(S->top==S->base)
                return 1;
        else
                return 0;
}
char GetTop(Sqstack *S)
{
        char E;
        if(StackEmpty(S))
                return 0;
        E=*S->top-1;
        return E;
}
void Push(Sqstack *S,char e)
{
        if(S->top-S->base>=S->stacksize)
        {
                S->base=(char*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(char));
                if(!S->base)
                        exit(-1);
                S->top=S->base+S->stacksize;
                S->stacksize+=STACKINCREMENT;
        }
        *S->top++=e;
}
void Pop(Sqstack *S,char *e)
{
        if(S->top==S->base)
                printf("ERROR!");
        *e=*S->top--;
}
char Precede(char A,char B)
{
        char a=A,b=B;
        if((a=='+'||a=='-')&&(b=='+'||b=='-'||b==')'||b=='#'))
                return '>';
        else if((a=='+'||a=='-')&&(b=='*'||b=='/'||b=='('||b=='#'))
                return '<';
        else if((a=='*'||a=='/')&&(b=='*'||b=='/'||b==')'||b=='#'||b=='+'||b=='-'))
                return '>';
        else if((a=='*'||a=='/')&&b=='(')
                return '>';
        else if(a=='('&&(b=='*'||b=='/'||b=='('||b=='+'||b=='-'))
                return '<';
        else if(a=='('&&b==')')
                return '=';
        else if(a==')'&&(b=='*'||b=='/'||b==')'||b=='+'||b=='-'||b=='#'))
                return '>';
        else if(a=='#'&&(b=='*'||b=='/'||b=='('||b=='+'||b=='-'))
                return '<';
        else if(a=='#'&&b=='#')
                return '=';
        else
                return '!';
}
int In(char e)
{
        if(e=='+'||e=='-'||e=='*'||e=='/'||e=='('||e==')'||e=='#')
                return 1;
        else
                return 0;
}
int Operate(int M,char F,int N)
{
        if(F=='+')
                return (N-48)+(M-48);
        else if(F=='-')
                return (N-48)-(M-48);
        else if(F=='*')
                return (N-48)*(M-48);
        else if(F=='/')
                return (N-48)/(M-48);
        else return 0;

}
int evaluate(Sqstack *P)
{
        char h=0,pl=0;
        char X=0,Y=0,sum=0;
        Sqstack Q;
        Initstack(&Q);
        while(P->top!=P->base)
        {
                Pop(P,&h);
                Push(&Q,h);
        }
        while(Q.top!=Q.base)
        {
                Pop(&Q,&pl);
                if(!In(pl))
                        Push(P,pl);
                else{
                        Pop(P,&X);Pop(P,&Y);
                        Push(P,(char)Operate(X,pl,Y));
                }
        }
        Pop(P,&sum);
        return        sum;
}
void Disp(Sqstack *S)
{
        while(S->top!=S->base)
                printf("%c",S->base++);
}
void Transexpression()
{
        char ch,x=0,y=0;
        Sqstack OPTR,HZ;
        Initstack(&HZ);Initstack(&OPTR);
        Push(&OPTR,'#');
        ch=getchar();
        while(ch!='#'||GetTop(&OPTR)!='#')
        {
                if(!In(ch))
                {
                        Push(&HZ,ch);ch=getchar();
                }
                else
                        switch(Precede(GetTop(&OPTR),ch))
                        {
                                case '<':Push(&OPTR,ch);ch=getchar();break;
                                case '=':Pop(&OPTR,&x);ch=getchar();break;
                                case '>':Pop(&OPTR,&y);Push(&HZ,y);ch=getchar();break;
                                default :break;
                        }
        }
        Disp(&HZ);
}
void main()
{
        printf("Please input exepression and endup with a '#':");
        Transexpression();
}


QQ截图20140402224705.png (1.15 KB, 下载次数: 4)

到这就输入不了了,求帮忙

到这就输入不了了,求帮忙
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复

使用道具 举报

5870

帖子

0

积分

5067

TBS

UID
4675
积分
0
TBS
5067
智商
2557
节操
2278
海贝
0
阅读权限
10
在线时间
79 小时
注册时间
2014-2-8
最后登录
2014-11-8
2
发表于 2014-4-2 22:48:23 | 只看该作者
完全看不懂

点评

我写得太乱了吧?  详情 回复 发表于 2014-4-2 22:50
回复 支持 反对

使用道具 举报

2万

帖子

1万

积分

-11

TBS

我的拥抱能不能打败你的不安

UID
149
积分
12489
TBS
-11
智商
9193
节操
6945
海贝
92
阅读权限
90
在线时间
988 小时
注册时间
2014-1-2
最后登录
2017-1-4

女神认证签到达人

QQ
3
发表于 2014-4-2 22:48:54 | 只看该作者
TT没学过 对不起

点评

没关系~~  详情 回复 发表于 2014-4-2 22:54

幻晓团群号:256923527
回复 支持 反对

使用道具 举报

<

12万

帖子

17万

积分

2万

TBS

♥有时温暖我们的恰恰 是那些素未谋面不怎么深知的网络中人♥

UID
211
积分
176154
TBS
25565
智商
26901
节操
37063
海贝
297
阅读权限
150
在线时间
7336 小时
注册时间
2014-1-2
最后登录
2021-9-18

二逼青年水货勋章榜上有名在线时间长签到达人

QQ
4
发表于 2014-4-2 22:49:48 | 只看该作者
没懂。。艾特大神吧@大神

点评

大神在哪呢。。  详情 回复 发表于 2014-4-2 22:56
只闻花香  不谈喜悲  喝茶读书  不争朝夕  做一个温暖的人
回复 支持 反对

使用道具 举报

2599

帖子

4171

积分

1059

TBS

UID
79
积分
4171
TBS
1059
智商
1400
节操
1365
海贝
6
阅读权限
60
在线时间
206 小时
注册时间
2014-1-2
最后登录
2022-4-15
QQ
5
发表于 2014-4-2 22:50:10 | 只看该作者
这个看不懂,没学这么深奥的呢

点评

额,我自己再想想吧。  详情 回复 发表于 2014-4-2 22:57
这里是右手,欢迎眼熟窝   
回复 支持 反对

使用道具 举报

7

帖子

0

积分

1025

TBS

UID
7434
积分
0
TBS
1025
智商
1012
节操
1011
海贝
0
阅读权限
10
在线时间
1 小时
注册时间
2014-3-22
最后登录
2014-4-3
6
 楼主| 发表于 2014-4-2 22:50:16 | 只看该作者

我写得太乱了吧?
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

654

帖子

0

积分

840

TBS

生活的太好总不能太想起你。

UID
7602
积分
0
TBS
840
智商
755
节操
735
海贝
0
阅读权限
10
在线时间
91 小时
注册时间
2014-3-25
最后登录
2014-8-12
7
发表于 2014-4-2 22:52:26 | 只看该作者
没懂

点评

呵呵,别这么萌。。  详情 回复 发表于 2014-4-2 22:58
越过谎言去拥抱你 我是hey妹呀
回复

使用道具 举报

5870

帖子

0

积分

5067

TBS

UID
4675
积分
0
TBS
5067
智商
2557
节操
2278
海贝
0
阅读权限
10
在线时间
79 小时
注册时间
2014-2-8
最后登录
2014-11-8
8
发表于 2014-4-2 22:52:37 | 只看该作者
long8855381 发表于 2014-4-2 22:50
我写得太乱了吧?

可能是的
回复 支持 反对

使用道具 举报

7

帖子

0

积分

1025

TBS

UID
7434
积分
0
TBS
1025
智商
1012
节操
1011
海贝
0
阅读权限
10
在线时间
1 小时
注册时间
2014-3-22
最后登录
2014-4-3
9
 楼主| 发表于 2014-4-2 22:54:14 | 只看该作者
Clelo。 发表于 2014-4-2 22:48
TT没学过 对不起

没关系~~
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

7

帖子

0

积分

1025

TBS

UID
7434
积分
0
TBS
1025
智商
1012
节操
1011
海贝
0
阅读权限
10
在线时间
1 小时
注册时间
2014-3-22
最后登录
2014-4-3
10
 楼主| 发表于 2014-4-2 22:56:57 | 只看该作者
铁血女汉子 发表于 2014-4-2 22:49
没懂。。艾特大神吧@大神

大神在哪呢。。
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-10 19:49,Processed in 0.037577 second(s), 35 queries.

Powered by Discuz!X3.4© 2001-2013 Comsenz Inc. 手机版|黑名单|站点地图|RGB转16进制|梦殇国际 MSI

贴吧交流群:172119290 | 编程交流群:232677917 | 官方YY频道:13234704 | 本站所有软件仅供学习交流使用!

工信部备案:赣ICP备14004172号-1 | 如有需要请联系 邮箱:541641237#qq.com (点击发邮件)

快速回复 返回顶部 返回列表