C语言实现任意长度多项式计算(非递归,不带括号)
来源:互联网 发布:网络教育 心理学 编辑:程序博客网 时间:2024/05/16 05:43
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>//执行计算过程的子函数double calc(double * pNum, char* pCh, unsigned int a);int main(){double* pNum = NULL;//用于存储数字char* pCh = NULL;//用于存储符号AA:pNum = (double*)malloc(sizeof(double));//分配一个double内存空间pCh = (char*)malloc(sizeof(char));//分配一个char型内存空间scanf("%lf%c", pNum, pCh);unsigned int a = 2;//用于动态内存分配while (*(pCh+a-2) != '=')//只要输入的符号不是‘=’{pNum = (double*)realloc(pNum,a*sizeof(double));//增加一个double型空间pCh = (char*)realloc(pCh,a*sizeof(char));//增加一个char型内存空间scanf("%lf%c", pNum+a-1, pCh+a-1);a++;}//将最后的结果移到输入多项式的等号后面for (unsigned int i = 0; i < a-1; i++){printf(" ");}double value = calc(pNum, pCh, a - 1);//调用计算函数printf("%lf\n\n",value);//输出计算结果free(pNum);//释放内存free(pCh);//释放内存goto AA;//跳回,准备接收下一个多项式system("pause");return 0;}//用于计算多项式double calc(double * pNum, char* pCh, unsigned int a){unsigned i = 0;//先遍历多项式,计算出乘除while (*(pCh + i) != '='){if (*(pCh + i) == '*'){//计算并移位*(pNum + i) = (*(pNum + i)) * (*(pNum + i + 1));*(pCh + i) = *(pCh + i + 1);for (unsigned int j = i + 1; j < a - 1; j++){pNum[j] = pNum[j + 1];pCh[j] = pCh[j + 1];}a--;i--;//用于调试的代码//for (unsigned int i = 0; i < a; i++)//{//printf("%d%c", pNum[i], pCh[i]);//}//printf("\n");}else if (*(pCh + i) == '/'){*(pNum + i) = (*(pNum + i)) / (*(pNum + i + 1));*(pCh + i) = *(pCh + i + 1);for (unsigned int j = i + 1; j < a - 1; j++){pNum[j] = pNum[j + 1];pCh[j] = pCh[j + 1];}a--;i--;////用于调试的代码//for (unsigned int i = 0; i < a; i++)//{//printf("%d%c", pNum[i], pCh[i]);//}//printf("\n");}i++;}i = 0;//再遍历多项式计算加减while (*(pCh + i) != '='){if (*(pCh + i) == '+'){*(pNum + i) = (*(pNum + i)) + (*(pNum + i + 1));*(pCh + i) = *(pCh + i + 1);for (unsigned int j = i + 1; j < a - 1; j++){pNum[j] = pNum[j + 1];pCh[j] = pCh[j + 1];}a--;i--;////用于调试的代码//for (unsigned int i = 0; i < a; i++)//{//printf("%d%c", pNum[i], pCh[i]);//}//printf("\n");}else if (*(pCh + i) == '-'){*(pNum + i) = (*(pNum + i)) - (*(pNum + i + 1));*(pCh + i) = *(pCh + i + 1);for (unsigned int j = i + 1; j < a - 1; j++){pNum[j] = pNum[j + 1];pCh[j] = pCh[j + 1];}a--;i--;////用于调试的代码//for (unsigned int i = 0; i < a; i++)//{//printf("%d%c", pNum[i], pCh[i]);//}//printf("\n");}i++;}return *pNum;//计算的结果存在pNum的第一个内存地址}
阅读全文
0 0
- C语言实现任意长度多项式计算(非递归,不带括号)
- C语言 编写递归函数实现厄密多项式计算。
- 用 C 语言实现 厄密多项式 (递归)
- C语言实现 厄密多项式 (递归)
- 【c语言】递归实现厄密多项式
- c语言单链表实现多项式计算
- 用C语言实现的一个可以计算任意长度整数加法的小程序
- 带括号的四则运算C语言实现
- C语言---递归反向输出任意长度的字符串
- 【c语言】递归函数计算厄密多项式的值
- C语言实现Huffman树并计算带权路径长度
- 【c语言】厄密多项式--用递归实现
- 任意长度DCT变换C语言实现方法
- 八皇后 c语言递归实现方法(带注释)
- 算法导论:堆排序非递归实现(c语言)
- 堆排序(非递归版)-- c语言实现
- 归并排序非递归实现C语言
- C语言非递归实现字符串逆转
- Java9新API--Collections、Streams
- springmvc-WebContent目录下的文件访问
- 3D显示
- C/C++ static 静态变量 1
- 分布式系统的本质
- C语言实现任意长度多项式计算(非递归,不带括号)
- sci期刊发表流程以及注意事项
- ubuntu手动挂载U盘注意事项
- java8 日期 时间 时区
- 薛之谦“消失”一月,再次登上舞台献唱(天后)
- leetcode--6. ZigZag Conversion
- 1070. 结绳(25)
- Tip:DataGrid 自动添加序号
- log4j的基本使用和参数设定