资源简介
c语言写的大数计算器,可用于计算10^100数量级的数据,可用于计算加法,乘法,幂次等,主要是算法的实现思路。
代码片段和文件信息
/* Extended precision integer calculator
* Implements + * and ^ (power of) operations
*
* Skeleton code written by Jianzhong Qi March 2018
*
*/
#include
#include
#include
#include
#define INT_SIZE 100 /* max number of digits per integer value */
#define LINE_LEN 103 /* maximum length of any input line */
#define NUM_VARS 10 /* number of different huge int “variables“ */
#define ASN_OP ‘=‘ /* assignment operator */
#define ECH_OP ‘?‘ /* echo operator */
#define ADD_OP ‘+‘ /* addition operator */
#define MUL_OP ‘*‘ /* multiplication operator */
#define POW_OP ‘^‘ /* power of operator */
#define OPR1_POS 1 /* position of the first operand */
#define OPR2_POS 3 /* position of the second operand */
#define OP_POS 2 /* position of the operator */
#define CH_ZERO ‘0‘ /* character 0 */
#define EXIT_CMD “exit“ /* command to exit */
#define PROMPT “> “ /* command prompt */
#define CMT_FLAG ‘%‘ /* indicator for comment line */
typedef int digit_t; /* a decimal digit */
typedef digit_t huge_t[INT_SIZE]; /* one huge int “variable“ */
/* add your constant and type definitions here */
/****************************************************************/
/* function prototypes */
void read_line(char *line int max_len);
void init(huge_t vars[] int lens[]);
void echo(huge_t vars[] int lens[] int opr1_index);
void assign(huge_t vars[] int lens[] int opr1_index char *opr2_str);
void add(huge_t vars[] int lens[] int opr1_index char *opr2_str);
void multiply(huge_t vars[] int lens[] int opr1_index char *opr2_str);
void power(huge_t vars[] int lens[] int opr1_index char *opr2_str);
/* add your function prototypes here */
/****************************************************************/
/* main function controls all the action do NOT modify this function */
int
main(int argc char *argv[]) {
char line[LINE_LEN+1]; /* to hold the input line */
huge_t vars[NUM_VARS]; /* to hold 10 huge integers */
int lens[NUM_VARS]; /* to hold the length of the 10 vars */
int opr1_index; /* index of the first operand in command */
char op; /* operator in command */
init(vars lens);
while (1) {
printf(PROMPT); /* print prompt */
read_line(line LINE_LEN); /* read one line of command */
if (line[0] == CMT_FLAG) { /* print comment in the test data */
printf(“%s\n“ line); /* used to simplify marking */
continue;
}
if (strcmp(line EXIT_CMD) == 0) { /* see if command is “exit“ */
return 0;
}
opr1_index = line[OPR1_POS] - CH_ZERO;/* first var number at line[1] */
op = line[OP_POS]; /* operator at line[2] */
if (op == ECH_OP) { /* print out the variable */
echo(vars lens opr1_index);
continue;
}
/* do the calculation second operand starts at line[3] */
if (op == ASN_OP) {
assign(vars lens opr1_index line+OPR2_POS);
} else i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8142 2018-04-16 22:13 calc.c
文件 37446 2018-04-16 22:13 calc.exe
文件 8924 2018-04-16 22:13 calc.o
文件 2639 2018-04-16 22:10 测试结果(1).jpg
文件 13504 2018-04-16 22:10 测试结果.jpg
- 上一篇:人事管理系统C语言课程设计报告
- 下一篇:基于c++的格斗游戏
相关资源
- 三维布尔运算算法
- 用C#和C++实现的进程调度算法程序操作
- 随机网络拓扑生成算法c++实现waxman算
- QR分解算法的纯c++代码
- C++实现的单纯形算法计算程序
- AES加密算法(C++实现)
- mfc图形界面校园导航系统
- ofdm资源分配中的贪婪算法代码
- 人工智能 八数码问题 A*算法 C语言
- EM算法(期望最大算法)实现
- RSA算法1024位C语言实现
- AES 加密算法接口及演示程序
- c++连通区域标记 算法
- DES算法C++实现
- 操作系统课程设计银行家算法C语言
- SPOOLing算法模拟 C++实现
- 操作系统3种页面置换算法 C++实现
- 二叉排序树查找算法
- crc8的校验算法(c语言)
- 银行家算法C实现
- xcs 基于遗传算法的自动学习分类器系
- AES加密算法c语言实现代码
- Dijkstra algorithm c++ 实现版 最短路径算
- C++实现的JPEG压缩算法
- C语言版BM3D算法
- DES加密码算法MFC类实现
- 操作系统CPU调度算法之最短剩余时间
- 从广度优先搜索深度优先搜索A*算法多
- 最优装载问题 计算机算法 c/c++语言
- 使用C++实现的CYK算法
评论
共有 条评论