惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
博客园 - 【当耐特】
量子位
Engineering at Meta
Engineering at Meta
博客园_首页
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
V
Visual Studio Blog
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Jina AI
Jina AI
The Cloudflare Blog
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东

明明如月成长笔记

个人数据的开源备份:从明清档案之殇想到的 简体字的双重优势:打字效率与扫盲成效全解析 四小时深圳书城奇遇:那些藏在书架间的偶然与必然 正式把我的笔记系统迁移到 Obsidian,为了和 AI 配合 Gemini CLI 登录踩坑记录:GOOGLE_CLOUD_PROJECT_ID 的坑与解法 在 MacOS 上,成功恢复存储卡上被误删的照片 AI CLI 工具:Claude Code, Codex, Gemini CLI, Qwen code, CodeBuddy cli, cursor-agent 我的常用命令 港漂日记62:父亲节独自带娃,室内游戏、香港公园探展、观鸟、品味米其林餐厅 南航随心飞机票爬虫解密 acw_sc__v2 港漂日记61:香港私立诊所首诊:商业医保如何改变我的就医体验? 香港历史博物馆:看秦始皇兵马俑,还能和孔子比身高? 港漂日记59:母亲节礼物!AI 涂色小技巧,让孩子的爱跃然纸上 港漂日记60:西营盘网红旧书店 Book & Go 淘书记 港漂日记58:萌娃中环学体操,课后老师狂点赞 五一游记D4:深圳笔架山儿童乐园,邂逅无人机送外卖 我的400篇博客都写了些什么 珊瑚海兔四岁啦 港漂日记D159:亲子同乐日:一场精彩的幼儿园嘉年华 蛇年春节自驾D10:东莞-深圳-香港 DeepSeek教我如何收拾行李箱 福田取逗留签 回港新方式 蛇年春节自驾D9:江门-顺德-东莞 中国侨都华侨华人博物馆 东莞迎宾馆 蛇年春节自驾D8:茂名-开平-江门 挥春作业 粤西堵车 开平碉楼 迎财神 茂名博物馆参观记 蛇年春节自驾D7:茂名 中国第一摊 茂名博物馆 亚朵酒店 蛇年春节自驾D6:南宁-茂名 发财树 青秀山 路途亲子游戏 蛇年春节自驾D5:南宁过大年 醒狮贺岁 三街两巷 特色美食 骑行穿城 琅西夜市 打铁花 新春好!我用DeepSeek写祝福,顺便送你三款红包封面 蛇年春节自驾D4:钦州-南宁 钦州老街,万丽年夜饭 蛇年春节自驾D3:海陵岛-钦州 绝美悬崖餐厅,海景房租赁行情 明明如月成长笔记2024年公众号创作回顾(含免费红包封面🧧) 蛇年春节自驾D2:深圳-阳江-海陵岛
该死的表达式求值
lmm333 · 2010-10-28 · via 明明如月成长笔记

晚上七点到八点花了不到一个小时写出来的表达式求值程序,因为几个无语的错误,居然调试到现在,累计调试的时间大概有五个小时了吧,太打击自信了!

教训:写代码细心,实时检验,以免程序长了之后花数倍的时间调试

#include<stack>
//#include<string>
#include<iostream>

using namespace std;


short Com[7][7]={ {1,1,0,0,0,1,1},{1,1,0,0,0,1,1},//运算符优先级
    {1,1,1,1,0,1,1},{1,1,1,1,0,1,1},
    {0,0,0,0,0,2,1},{1,1,1,1,1,1,1},{0,0,0,0,0,0,0}};
   
int Operate(int a,char theta,int b)//计算
{
if(theta=='+')return a+b;
if(theta=='-')return a-b;
if(theta=='*')return a*b;
if(theta=='/')return a/b;
}
int StoN(char z)//返回操作符代号便于计算优先级
{ if(z=='+')return 0;
if(z=='-')return 1;
if(z=='*')return 2;
if(z=='/')return 3;
if(z=='(')return 4;
if(z==')')return 5;
if(z=='#')return 6;
}

int count(char s[])//主程序
{
stack<char> oper;
stack<int> num;
int aa,bb,cc,t,ccc;
oper.push('#');
int l=strlen(s),i,j;
char temp[]="#";
strcat(s,temp);
//s[l+1]=35;
char c,theta;
i=-1;
c=s[++i];
while(c!='#' || oper.top()!='#')//oper.top()!='#'
{
   //if(!(c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')'))
   if(c>='0' && c<='9')
   {
    t=0;
    while(c>='0'&&c<='9')
    {
     t++;
     c=s[++i];
    }
    int d=atoi(s+i-t);
    i--;
    num.push(d);
    c=s[++i];
   }
   else
   {
    cc=StoN(oper.top());
    ccc=StoN(c);
    //oper.pop;
    switch(Com[cc][ccc])
    {
     case 0:// <
      oper.push(c);
      c=s[++i];
      break;
     case 2:// =
      oper.pop();
      c=s[++i];
      break;
     case 1:// >
      theta=oper.top();
      oper.pop();
     
      bb=num.top();
      num.pop();
     
      aa=num.top();
      num.pop();
     
      num.push(Operate(aa,theta,bb));
      break;
    }
   }
}
return num.top();
}

int main()
{
int n,base;
char s[100];
while(1){
cout<<"输入表达式";
cin>>s;
cout<<"key="<<count(s)<<endl;
}

printf("\n");
system("pause");
}
//4+2*3-10/5 ac
//2+(3+4/2)*2 ac
//2*(3+4/2)*2 ac
//2*2+(3+4) ac
//1+(2+3) ac

ps:百度不支持tab,晕。。。