鱼C论坛

 找回密码
 立即注册
查看: 8879|回复: 55

[学习笔记] 树的应用:输入表达式,算出结果

[复制链接]
发表于 2021-11-16 11:38:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 划句顾 于 2021-11-22 19:17 编辑

关于0x3f3f3f3f

                               
登录/注册后可看大图

代码如下:

头文件和代码:
/*
*author:LaoGu
*time :2021/11/15
*fuction:计算值 
*/
#include<iostream>
#include<string.h>  //可以计算字符串大小 
#include<stdlib.h>   //可以使用malloc()函数 
#include<ctype.h>   //有isdigit()函数

using namespace std;

#define MAX 0x3f3f3f3f    //无穷大常量   
定义结构体:
//定义结点结构体 
typedef struct TNode{
        int flag;  // 1为符号,0为数字
        int data;  //存储数字
        int ch ;   //存储符号
        struct TNode *lchild; 
    struct TNode *rchild; 
}TNode;
游客,如果您要查看本帖隐藏内容请回复

游客,如果您要查看本帖隐藏内容请回复

加减运算:
//四则运算 " +、—、*、/ "
int cal(struct TNode *root){
        if(root->flag==1){
                switch(root->ch){
                        case '+':
                         {
                    return cal(root->lchild)+cal(root->rchild);
                            break;
                          }
                    case '-': 
                        {
                        return cal(root->lchild)-cal(root->rchild);
                        break;
                        }
                    case '*':
                        {
                            return cal(root->lchild)*cal(root->rchild);
                        break;
                    }
                    case '/':{
                            return cal(root->lchild)/cal(root->rchild);
                                break;
                        }
        }
 }
 return root->data; 
}
主函数:
//主函数 
int main(int argc,char *argv[])  //注:*argv[] == **argv 都是指 指向指针的指针 
{
        char a[200];
        int i;
        cout<<"请输入要计算的表达式的数量"<<endl;
        cin>>i;
        for(int j=0;j<i;j++)
        {        
           cout<<"请输入一个表达式:";
          scanf("%s",a);
       //给节点分配空间
           struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
           b = buildTree(a,0,strlen(a)-1);    // 0可以换成其他的值x,可以计算从第x开始的值 
           printf("表达式【%s】的结果是%d\n",a,cal(b));
           cout<<endl;
        } 
        return 0;
} 


                               
登录/注册后可看大图

如果想要一直计算不同的表达式,可以将主函数改为这样:
//主函数 
int main(int argc,char *argv[])  //注:*argv[] == **argv 都是指 指向指针的指针 
{
        char a[200];
        while(1) 
        {        
           cout<<"请输入一个表达式:";
          scanf("%s",a);
       //给节点分配空间
           struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
           b = buildTree(a,0,strlen(a)-1);    // 0可以换成其他的值x,可以计算从第x开始的值 
           printf("表达式【%s】的结果是%d\n",a,cal(b));
           cout<<endl;
        } 
        return 0;
} 


                               
登录/注册后可看大图

运算结果: 运算.png

                               
登录/注册后可看大图

想先算啥,必须得加括号,计算机并不会知道你要先哪个。 ,不然会和我上面第二个结果一样,只返回一个value值。
giao!!!


                               
登录/注册后可看大图

而int main(int argc,char **argv)我也是第一次昨晚第一次看到,详细了解可点击argv,argc  
或者是这个
  点我


                               
登录/注册后可看大图

数据结构作业真容易【bushi】小声哔哔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-18 21:41:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-20 17:00:46 | 显示全部楼层
学习代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 00:16:03 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 09:03:46 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 10:51:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 11:12:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 11:13:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 08:36:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 10:41:08 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 12:23:52 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 13:25:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 13:29:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 18:14:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-22 19:17:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-23 21:55:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-23 21:56:15 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-23 23:08:14 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-24 23:46:28 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-25 10:14:19 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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