划句顾 发表于 2021-11-16 11:38:01

树的应用:输入表达式,算出结果

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

关于0x3f3f3f3f
static/image/hrline/5.gif
代码如下:

头文件和代码:/*
*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;
**** Hidden Message *****
**** Hidden Message *****
加减运算://四则运算 " +、—、*、/ "
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;
        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;
}

static/image/hrline/5.gif
如果想要一直计算不同的表达式,可以将主函数改为这样:
//主函数
int main(int argc,char *argv[])//注:*argv[] == **argv 都是指 指向指针的指针
{
        char a;
      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;
}

static/image/hrline/5.gif
运算结果:
static/image/hrline/5.gif
想先算啥,必须得加括号,计算机并不会知道你要先哪个。{:10_247:} ,不然会和我上面第二个结果一样,只返回一个value值。giao!!!{:10_258:}

static/image/hrline/5.gif
而int main(int argc,char **argv)我也是第一次昨晚第一次看到,详细了解可点击argv,argc
或者是这个点我{:10_299:}
static/image/hrline/5.gif
数据结构作业真容易【bushi】【小声哔哔】 {:5_100:}

hornwong 发表于 2021-11-18 21:41:01

{:5_95:}

tomok 发表于 2021-11-20 17:00:46

学习代码


zhsguitar 发表于 2021-11-21 00:16:03

{:10_257:}{:10_257:}

一点五 发表于 2021-11-21 09:03:46

{:10_334:}

noah-py 发表于 2021-11-21 10:51:05

{:10_275:}

_mikasa 发表于 2021-11-21 11:12:19

{:5_109:}

我叫武炜昊 发表于 2021-11-21 11:13:44

{:10_275:}

阿萨德按时 发表于 2021-11-22 08:36:55

{:10_254:}

阿萨德按时 发表于 2021-11-22 10:41:08

{:10_254:}

tianlai7266 发表于 2021-11-22 12:23:52

{:10_254:}

1molHF 发表于 2021-11-22 13:25:24

{:10_256:}

1molHF 发表于 2021-11-22 13:29:01

{:10_256:}

嘉岳呀 发表于 2021-11-22 18:14:34

{:10_256:}

划句顾 发表于 2021-11-22 19:17:31

嘉岳呀 发表于 2021-11-22 18:14


{:10_257:}没有拿到币呀

100gram 发表于 2021-11-23 21:55:41

{:10_275:}

100gram 发表于 2021-11-23 21:56:15

{:10_275:}

yalie 发表于 2021-11-23 23:08:14

{:5_90:}

ChinXYoung 发表于 2021-11-24 23:46:28

{:10_256:}

全桥整流 发表于 2021-11-25 10:14:19

{:5_109:}
页: [1] 2 3
查看完整版本: 树的应用:输入表达式,算出结果