梦殇国际

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

7

帖子

0

积分

1025

TBS

UID
7434
积分
0
TBS
1025
智商
1012
节操
1011
海贝
0
阅读权限
0
在线时间
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, 下载次数: 5)

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

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

使用道具 举报

2689

帖子

620

积分

1

TBS

UID
555
积分
620
TBS
1
智商
870
节操
1105
海贝
56
阅读权限
40
在线时间
201 小时
注册时间
2014-1-3
最后登录
2022-5-19
22
发表于 2014-4-3 21:30:02 爪机党 | 只看该作者
木有学过!来自: Android客户端
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复

使用道具 举报

9183

帖子

4382

积分

6922

TBS

吊炸天

UID
5
积分
4382
TBS
6922
智商
6445
节操
44176
海贝
627
阅读权限
200
在线时间
1976 小时
注册时间
2014-1-1
最后登录
2024-10-30

二逼青年

QQ
21
发表于 2014-4-3 20:53:22 爪机党 | 只看该作者
本帖最后由 小B 于 2014-4-3 22:48 编辑

算个不知什么长宽,然后各种输出给写这么复杂,C大神膜拜也!
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

2545

帖子

1922

积分

5

TBS

我就是我,是颜色不一样的烟火 -duk

UID
230
积分
1922
TBS
5
智商
5619
节操
2290
海贝
30
阅读权限
50
在线时间
355 小时
注册时间
2014-1-2
最后登录
2024-7-27
QQ
20
发表于 2014-4-3 17:27:04 | 只看该作者

鄙人不懂,建议去程序爱好者社区发帖
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

头像被屏蔽

717

帖子

1670

积分

811

TBS
UID
6800
积分
1670
TBS
811
智商
855
节操
809
海贝
1
阅读权限
0
在线时间
25 小时
注册时间
2014-3-13
最后登录
2015-6-2
19
发表于 2014-4-3 00:22:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

210

帖子

0

积分

592

TBS

UID
7846
积分
0
TBS
592
智商
465
节操
457
海贝
0
阅读权限
0
在线时间
73 小时
注册时间
2014-3-29
最后登录
2014-9-17
18
发表于 2014-4-3 00:03:33 | 只看该作者
这是什么
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复

使用道具 举报

1万

帖子

4万

积分

8239

TBS

深情即是一桩悲剧,必得以死来句读。

UID
2496
积分
42238
TBS
8239
智商
5025
节操
7496
海贝
4
阅读权限
160
在线时间
396 小时
注册时间
2014-1-20
最后登录
2016-7-28
17
发表于 2014-4-2 23:46:05 | 只看该作者
。。完全看不懂
   [天真岁月不忍欺  青春荒唐我不负你]
回复 支持 反对

使用道具 举报

9585

帖子

2873

积分

219

TBS

UID
6081
积分
2873
TBS
219
智商
6321
节操
2839
海贝
151
阅读权限
222
在线时间
770 小时
注册时间
2014-2-28
最后登录
2020-6-15
16
发表于 2014-4-2 23:03:42 | 只看该作者
辣四什么玩意儿 吓我一跳
自由随性是生活最高追求
回复 支持 反对

使用道具 举报

22万

帖子

6万

积分

6万

TBS

❤牵着我的手❤闭着眼睛走你也不会迷路❤

UID
77
积分
67552
TBS
65989
智商
75025
节操
75016
海贝
1142
阅读权限
150
在线时间
6092 小时
注册时间
2014-1-2
最后登录
2023-6-29

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

QQ
15
发表于 2014-4-2 23:01:47 | 只看该作者

我完全看不懂
回复 支持 反对

使用道具 举报

7

帖子

0

积分

1025

TBS

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

求帮忙解决

点评

我完全看不懂  详情 回复 发表于 2014-4-2 23:01
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 20:59,Processed in 0.084524 second(s), 40 queries.

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

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

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

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