数组实现多项式的加减乘运算

"fatal.h"//头文件
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define Error(Str) FatalError(Str)
4 #define FatalError(Str) fprintf(stderr,"%s\n",Str),exit(1);
  1 /* This code doesn‘t really do much */
  2 /* Thus I haven‘t bothered testing it */
  3
  4 #include "fatal.h"//头文件
  5
  6 #define MaxDegree 100//定义多项式最大指数是100
  7
  8 static int
  9 Max( int A, int B )
 10 {
 11     return A > B ? A : B;//返回AB中的最大值
 12 }
 13      //定义一个结构体数组
 15         typedef struct
 16         {
 17             int CoeffArray[ MaxDegree + 1 ];//需要多存储一个常数项
 18             int HighPower;//存储多项式的最高项的指数
 19         } *Polynomial;
 20 /* END */
 21
 22 /* START: fig3_19.txt */
 23         void
 24         ZeroPolynomial( Polynomial Poly )//初始化多项式
 25         {
 26             int i;
 27
 28             for( i = 0; i <= MaxDegree; i++ )
 29                 Poly->CoeffArray[ i ] = 0;
 30             Poly->HighPower = 0;
 31         }
 32 /* END */
 33
 34 /* START: fig3_20.txt */
 35         void                          //两个多项式相加
 36         AddPolynomial( const Polynomial Poly1, const Polynomial Poly2,
 37                        Polynomial PolySum )
 38         {
 39             int i;
 40
 41             ZeroPolynomial( PolySum );
 42             PolySum->HighPower = Max( Poly1->HighPower,
 43                                       Poly2->HighPower );
 44
 45             for( i = PolySum->HighPower; i >= 0; i-- )
 46                 PolySum->CoeffArray[ i ] = Poly1->CoeffArray[ i ]
 47                                                + Poly2->CoeffArray[ i ];
 48         }
 49 /* END */
 50
 51 /* START: fig3_21.txt */
 52         void                                    //两个多项式相乘
 53         MultPolynomial( const Polynomial Poly1,
 54                         const Polynomial Poly2, Polynomial PolyProd )
 55         {
 56             int i, j;
 57
 58             ZeroPolynomial( PolyProd );
 59             PolyProd->HighPower = Poly1->HighPower + Poly2->HighPower;
 60
 61             if( PolyProd->HighPower > MaxDegree )
 62                 Error( "Exceeded array size" );
 63             else
 64                 for( i = 0; i <= Poly1->HighPower; i++ )
 65                     for( j = 0; j <= Poly2->HighPower; j++ )
 66                         PolyProd->CoeffArray[ i + j ] +=
 67                                 Poly1->CoeffArray[ i ] *
 68                                 Poly2->CoeffArray[ j ];
 69         }
 70 /* END */
时间: 2024-10-21 19:36:48

数组实现多项式的加减乘运算的相关文章

转:JS日期加减,日期运算

原文 出处http://hi.baidu.com/tonlywang/item/685fba8933a2a756e73d1950 一.日期减去天数等于第二个日期 function cc(dd,dadd) ...{ //可以加上错误处理 var a = new Date(dd) a = a.valueOf() a = a - dadd * 24 * 60 * 60 * 1000 a = new Date(a) alert(a.getFullYear() + "年" + (a.getMon

JS日期加减,日期运算

一.日期减去天数等于第二个日期 function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")}cc("12/23/200

C_BigDecimal_加减运算

首先举个例子说说思路: 输入str1:1.341   str2:11.2  在C语言中存储字符串的直接是字符型数组,strlen(str)代表字符串的长度(那个小数点也要算的),则str1,str2的长度为5和4.而浮点数加减运算时遵循从右往左计算,所以首先要使得字符串格式化.找到并返回存储字符串中小数点的下标,str1,str2小数点位置下标为1和2,然后用字符串长度减去即可求出小数点后的位数差,通过循环将短的加0补齐,为1.341,11.200,最后按最长长度循环将字符从右依次赋值给自定的c

字符串大数加减运算问题

这里自己利用STL模板中的容器和链表实现字符串大数加减运算. 1 #include<iostream> 2 #include<vector> 3 #include<list> 4 using namespace std; 5 6 list<char> Input_Number(list<char> ilist)//输入链表字符串,以‘#’作为结束符 7 { 8 cout<<"please Input string ,end

二维树状数组的区间加减及查询 tyvj 1716 上帝造题的七分钟

具体解释见小结.http://blog.csdn.net/zmx354/article/details/31740985 #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <queue> #include <cmath> #include <stack>

代码练习(二维数组的定义,字符串加减,子元素的创建及绑定,排序算法)

<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title>IFE JavaScript Task 01</title> </head> <body> <ul id="source"> <li>北京空气质量:<b>90</b></li> <li>上海空

linux date 加减运算

在linux shell编程中,经常用到日期的加减运算 查看时间: [[email protected] ~]# date Fri Sep  2 13:12:56 CST 2016 修改时间: [[email protected] ~]# date -s "1980-01-01 00:00:00" Tue Jan  1 00:00:00 CST 1980 其实date命令本身提供了日期的加减运算 非常方便.例如:得到昨天的时间date +%Y%m%d --date="-1 d

让文本框支持加减运算的实现方法

一个网页表单效果,让表单内的文本框支持加减运算,不过你要按正确的运算式输入,要不然它没有那么智能哦,比如输入1+5,文本框旁边会显示计算结果,这要归功于JavaScript的功能. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&

Oracle 如何对时间进行简单加减运算

在我们用dbms_job包进行定时Job的时候,需要设置时间间隔,所以需要知道时间的基本加减方法. SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 会话已更改. SQL> select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual; --分别是加一小时,一分钟,一秒钟 SYSDATE SYSDATE+1/24 SYSDATE+