#include<stdlib.h>/*è°ç¨å¨æåå¸å½æ°åéæºå½æ°*/
#include<stdio.h>
#include<ctype.h>/*è°ç¨å符å½æ°*/typedef struct term { //项ç表示ï¼å¤é¡¹å¼ç项ä½ä¸ºLinkListçæ°æ®å
ç´
float coef; //ç³»æ°
int expn; //ææ° struct term *next;
}term; term* CreatPolyn(term *P,int m) { // ç®æ³
// è¾å
¥m项çç³»æ°åææ°ï¼å»ºç«è¡¨ç¤ºä¸å
å¤é¡¹å¼çæåºé¾è¡¨P
if(m <= 0) return NULL;
term *h = P = (term*)malloc(sizeof(term)), *q;
P->coef = 0.0;
int i;
printf("ä¾æ¬¡è¾å
¥%d个æ°ï¼åä¸ä¸ªä¸ºç³»æ°ï¼åä¸ä¸ªä¸ºææ°ï¼\n",m*2);
for (i = 1; i <= m; ++i) { // ä¾æ¬¡è¾å
¥m个éé¶é¡¹
scanf("%f%d",&P->coef,&P->expn);
if(P->coef)
q = P;
P = P->next = (term*)malloc(sizeof(term));
}
q->next = NULL;
free(P);
return h;
} // CreatPolyn term* selsort(term *h) {
term *g, *p, *q;
if(!h) return NULL;
float f;
int i, fini = 1;
for(g = h;g->next&&fini;g = g->next) {
fini = 0;
for(p = h,q = h->next;q;p = p->next,q = q->next)
if (p->expn < q->expn) {
f = p->coef;i = p->expn;
p->coef = q->coef;p->expn = q->expn;
q->coef = f;q->expn = i;
fini = 1;
}
}
for(g = h,p = g->next;p;)
if(g->expn==p->expn) {
g->coef += p->coef;
g->next = p->next;
q = p;
p = p->next;
free(q);
}
else if(g->next) {
g = g->next;
p = p->next;
}
return h;
} void PrintfPoly(term *P) {
term *q = P;
if(!q) {
putchar('0');
return;
}
if(q->coef!=1) {
printf("%g",q->coef);
if(q->expn==1) putchar('X');
else if(q->expn) printf("X^%d",q->expn);
}
else if(!q->expn) putchar('1');
else if(q->expn==1) putchar('X');
else printf("X^%d",q->expn);
q = q->next;
while (q) {
if(q->coef > 0) putchar('+');
if(q->coef!=1) {
printf("%g",q->coef);
if(q->expn==1) putchar('X');
else if(q->expn) printf("X^%d",q->expn);
}
else if(!q->expn) putchar('1');
else if(q->expn==1) putchar('X');
else printf("X^%d",q->expn);
q = q->next;
}
} Compare(term *a, term *b) { /*表示å½æ°çè¿åå¼æ¯ä¸ä¸ªæåæ´åæ°æ®çæé*/
if (a->expn < b->expn) return -1;
if (a->expn > b->expn) return 1;
return 0;
} term* APolyn(term *Pa, term *Pb) { // ç®æ³
// å¤é¡¹å¼å æ³ï¼Pa = Paï¼Pbï¼å©ç¨ä¸¤ä¸ªå¤é¡¹å¼çç»ç¹ææ"åå¤é¡¹å¼"ã
term *h, *qa = Pa, *qb = Pb, *p, *q;
float sum;
h = p = (term*)malloc(sizeof(term));
p->next = NULL;
while (qa && qb) { // PaåPbåé空
switch (Compare(qa,qb)) {
case -1: // å¤é¡¹å¼PAä¸å½åç»ç¹çææ°å¼å°
p->next = qb;
p = qb;
qb = qb->next;
break;
case 0: // 两è
çææ°å¼ç¸ç
sum = qa->coef + qb->coef;
if (sum != 0.0) { // ä¿®æ¹å¤é¡¹å¼PAä¸å½åç»ç¹çç³»æ°å¼
p->next = qa;
qa->coef = sum;
p = qa;
qa = qa->next;
}
else { // å é¤å¤é¡¹å¼PAä¸å½åç»ç¹
q = qa;
qa = qa->next;
free(q);
}
q = qb;
qb = qb->next;
free(q);
break;
case 1: // å¤é¡¹å¼PBä¸å½åç»ç¹çææ°å¼å°
p->next = qa;
p = qa;
qa = qa->next;
break;
} // switch
} // while
if (Pa) p->next = qa; // é¾æ¥Paä¸å©ä½ç»ç¹
if (Pb) p->next = qb; // é¾æ¥Pbä¸å©ä½ç»ç¹
q = h;
h = h->next;
free(q);
return h;
} // APolyn term* A(term *Pa, term *Pb) {
int n;
puts("è¾å
¥ç¬¬äºä¸ªä¸å
å¤é¡¹å¼ç项æ°");
scanf("%d",&n);
Pb = CreatPolyn(Pb,n);
Pb = selsort(Pb); /*对n-1个å
ç´ éæ©æåº*/
PrintfPoly(Pa);
if(Pb && Pb->coef>0) printf(" + ");
PrintfPoly(Pb);
Pa = APolyn(Pa,Pb);
printf(" = ");
Pa = selsort(Pa);
PrintfPoly(Pa);
return Pa;
} term* BPolyn(term *Pa, term *Pb) { // ç®æ³
// å¤é¡¹å¼åæ³ï¼Pa = Pa-Pbï¼å©ç¨ä¸¤ä¸ªå¤é¡¹å¼çç»ç¹ææ"å·®å¤é¡¹å¼"ã
term *p = Pb;
while(p) {
p->coef *= -1;
p = p->next;
}
return APolyn(Pa,Pb);
} // BPolyn term* B(term *Pa, term *Pb) {
int n;
puts("è¾å
¥ç¬¬äºä¸ªä¸å
å¤é¡¹å¼ç项æ°");
scanf("%d",&n);
Pb = CreatPolyn(Pb,n);
Pb = selsort(Pb);
PrintfPoly(Pa);
printf(" - ");
putchar('(');PrintfPoly(Pb);putchar(')');
Pa = BPolyn(Pa,Pb);
printf(" = ");
Pa = selsort(Pa);
PrintfPoly(Pa);
return Pa;
} void main() {
term *M,*N;
char s[2];
int i,n;
puts("ä¸å
å¤é¡¹å¼è®¡ç®:\nè¾å
¥ç¬¬ä¸ä¸ªä¸å
å¤é¡¹å¼ç项æ°");
scanf("%d",&n);
M = CreatPolyn(M,n);
M = selsort(M);
PrintfPoly(M);
p: puts("\n1:å \n2:å\n3:ä¸ä¸æ¥");
getchar();
q: gets(s);
if(s[1]!='\0' || !isdigit(*s)) { /*å¤æä¸ä¸ªå符æ¯ä¸æ¯0-9ä¹é´ä»»æä¸ä¸ª*/
puts("è¾å
¥æ误,请éæ°è¾å
¥!");goto q;
}
i = *s-48;
switch(i) {
case 1:M = A(M,N);goto p;;
case 2:M = B(M,N);goto p;;
case 3:break;
default:puts("è¾å
¥æ误,请éæ°è¾å
¥!");goto q;
}
}
温馨提示:内容为网友见解,仅供参考
多项式计算器怎样编写?用C++
include<ctype.h>\/*调用字符函数*\/typedef struct term { \/\/项的表示,多项式的项作为LinkList的数据元素 float coef; \/\/系数 int expn; \/\/指数 struct term *next;}term; term* CreatPolyn(term *P,int m) { \/\/ 算法 \/\/ 输入m项的系数和指数,建立表示一元多项式的有序链表P if(m <= ...
[源码和文档分享]基于C++实现的多项式计算器系统
实验内容涉及设计并实现一个多项式计算器系统。利用C++的类及运算符重载特性,编写源代码,最终生成可执行程序,以实现对简单多项式的计算操作。实现步骤如下:1. 定义多项式类,包含多项式的系数和指数,并实现运算符重载以支持多项式的加、减、乘、除等基本运算。2. 设计用户接口,允许用户输入多项式表达式...
用c语言 (c++) 编写计算器程序
01 首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示 02 接下来我们在项目下面
用C++编一个一元多项式计算器 大虾们 谢谢啦!!!
void DestroyPolyn(Polyn p)\/\/销毁多项式p { Polyn q1,q2;q1=p->next;q2=q1->next;while(q1->next){ free(q1);q1=q2;\/\/指针后移 q2=q2->next;} } void PrintPolyn(Polyn P){ Polyn q=P->next;int flag=1;\/\/项数计数器 if(!q)\/\/若多项式为空,输出0 { cout<<"0"<<"\\n"...
用C++写出以下程序一元多项式简单的计算器
void main(){ float a,b,c,s,x1,x2;double t;cout<<"请输入三个数字:a,b,c"<<endl;cin>>a>>b>>c;cout<<"方程"<<a<<"x*x"<<"+"<<c<<"x"<<"+"<<c<<"=0"<<"根如下:"<<endl;if(a==0.0)if(b!=0.0)cout<<"方程的根为:"<<-c\/b<<endl;else if (c==...
求助C++编写———跳表的实现
【问题描述】设计一个一元稀疏多项式简单计算器 【基本要求】一元多项式简单计算器的基本功能是:1,输入并建立多项式;2,输出多项式,输出形式为整数序列:n,c1,e1,c2,c2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;3,多项式a和b相加,建立多项式a+b;4,...
谁有C++编写DOS窗口的多项式计算器代码,让我参考一下!
include <string> using namespace std;struct node { enum nodetype{node_opcode,node_number};nodetype type;union { double val;char opcode;};node(double v) {val=v;} node(char op) {opcode=op;} };class mycal { list<node> tree;public:int BuildTree(string &s){ int oldpos=0;...
用C++编写一个计算器程序。用户输入两个运算数和四则运算符,输出计算结 ...
用C++编写的”输入两个运算数和四则运算符,输出计算结果”计算器程序代码具体如下:include<stdio.h> void main(){int a,b,d;char c;printf("请输入一种运算符:\\n");scanf("%c",&c);printf("请输入两个数:\\n");scanf("%d",&a);scanf("%d",&b);switch(c){ case '+':d=a+...
怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器?
用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器的方法:1、打开visual C++ 6.0-文件-新建-文件-C++ Source File;2、输入预处理命令和主函数:include<stdio.h> \/*函数头:输入输出头文件*\/ void main()\/*空类型:主函数*\/ 3、定义变量:int a,b,d; \/*定义变量的数据类型为...
C++ mfc做计算器 具体步骤 急!!!
1.首先做计算器界面类,界面上要用0-9, +,-,*,\/,=等(复杂点还可以做的和XP一样的科学计算器)2.添加计算逻辑,每个按建点下后,在输出栏的显示我这里有源代码,你如果要请提供邮箱附部分核心代码:1.首先做计算器界面类,界面上要用0-9, +,-,*,\/,=等(复杂点还可以做的和XP一样的科学计算器)2.添加...