平台:VC++ 2005 测试通过!
.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件。
它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 twod.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
这些都是使用应用程序向导生成的 VC++ 文件故不列出
我只列出程序主要部分!
/*给予标准库中的vector, lists等实现
一元稀疏多项式*/
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
typedef struct {
float _coef;
int _expn;
} LNode;//定义多项式链表的'节点'类型
typedef list<LNode> Polynomial;
/*一元多项式类型接口函数的定义部分,
此部分对Polynomial类型的使用者公开*/
void CreatPolyn(Polynomial& p, vector<double>& coef, vector<int>& expon);
void PrintPolyn(const Polynomial& p);
bool comp (const LNode& a, const LNode& b);
void AddPolyn(const Polynomial& Pa,const Polynomial& Pb,Polynomial& PSum);
/*一元多项式类型接口函数的实现部分,
此部分不对Polynomial类型的使用者公开*/
void CreatPolyn(Polynomial& p, vector<double>& coef, vector<int>& expon)
{
for (int i = 0; i < expon.size(); ++i) {
LNode tempnode;
tempnode._coef = coef[i]; tempnode._expn = expon[i];
/*不断将新节点从链表头部插入*/
p.push_back(tempnode);
}
/*将新生成的list按照指数进行排序*/
p.sort(comp); //comp是节点排序的标准
}
//LNode的排序标准,此函数将作为sort函数的
//参数来使用
bool comp (const LNode& a, const LNode& b){
if (a._expn < b._expn) return true;
else return false;
}
//输出多项式链表内容
void PrintPolyn(const Polynomial& p){
if( p.empty() )
cout<<"链表是空链表!";
else{
/*定义遍历链表的迭代子*/
list<LNode>::const_iterator iter = p.begin();
for(int i = 0; i<p.size(); i++ ){
cout<<(*iter)._coef << "x^" <<(*iter)._expn;
if ( i != (p.size()-1) ) cout<<"+";
iter++;
}
cout << endl;
}
}
void AddPolyn(const Polynomial& Pa, const Polynomial& Pb,Polynomial& PSum)
{
/*定义遍历链表的迭代子*/
list<LNode>::const_iterator iter_a = Pa.begin();
list<LNode>::const_iterator iter_b = Pb.begin();
while( (iter_a!=Pa.end()) && (iter_b!=Pb.end()) ){
if ( (*iter_a)._expn > (*iter_b)._expn ) { //if 1
LNode newnode;
newnode._coef = (*iter_b)._coef;
newnode._expn = (*iter_b)._expn;
PSum.push_back(newnode);
iter_b++;
}//endif 1
else if ((*iter_a)._expn < (*iter_b)._expn ){ //if 2
LNode newnode;
newnode._coef = (*iter_a)._coef;
newnode._expn = (*iter_a)._expn;
PSum.push_back(newnode);
iter_a++;
}//end if 2
else {
LNode newnode;
newnode._coef = (*iter_a)._coef + (*iter_a)._coef;
newnode._expn = (*iter_a)._expn;
PSum.push_back(newnode);
iter_a++; iter_b++;
}
}
//Pa链表中还有剩余节点
while(iter_a!=Pa.end()){
LNode newnode;
newnode._coef = (*iter_a)._coef;
newnode._expn = (*iter_a)._expn;
PSum.push_back(newnode);
iter_a++;
}
//Pb链表中还有剩余节点
while(iter_b!=Pb.end()){
LNode newnode;
newnode._coef = (*iter_b)._coef;
newnode._expn = (*iter_b)._expn;
PSum.push_back(newnode);
iter_b++;
}
}
// Polynomial_SL.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Polynomial_SL.h"
int _tmain(int argc, _TCHAR* argv[])
{
string s;
do{
double dval = 0.0;
int ival = 0;
int A_Num_items;//A多项式包含的项数,程序中由用户指定
int B_Num_items;//B多项式包含的项数,程序中由用户指定
vector<double> A_coefficients;//A多项式系数数组
vector<int> A_exponents;//A多项式指数数组
vector<double> B_coefficients;//B多项式系数数组
vector<int> B_exponents;//B多项式指数数组
cout<<"请输入多项式A(x)的项数: ";
cin>>A_Num_items;
cout<<"请输入多项式A(x)的系数: ";
for(int i = 0; i < A_Num_items; i++){
cin>>dval;
A_coefficients.push_back(dval);
}
cout<<"请输入多项式A(x)的指数: ";
for(int i = 0; i < A_Num_items; i++){
cin>>ival;
A_exponents.push_back(ival);
}
cout<<"请输入多项式B(x)的项数: ";
cin>>B_Num_items;
cout<<"请输入多项式B(x)的系数: ";
for(int i = 0; i < B_Num_items; i++){
cin>>dval;
B_coefficients.push_back(dval);
}
cout<<"请输入多项式B(x)的指数: ";
for(int i = 0; i < B_Num_items; i++){
cin>>ival;
B_exponents.push_back(ival);
}
Polynomial Pa,Pb,PSum;
CreatPolyn(Pa,A_coefficients,A_exponents);
CreatPolyn(Pb,B_coefficients,B_exponents);
cout<<"A(x) = ";
PrintPolyn(Pa);
cout<<"B(x) = ";
PrintPolyn(Pb);
cout << "A(x) + B(x) = ";
AddPolyn(Pa,Pb,PSum);
PrintPolyn(PSum);
}while(!(s == "exit"));
return 0;
}
分享到:
相关推荐
在这个实验和课程设计中,我们关注的是“一元稀疏多项式”(Univariate Sparse Polynomial),这是一个在计算数学和计算机科学中常见的概念。一元稀疏多项式指的是只包含少数非零项的多项式,这对于处理大型计算问题...
总之,C++中的数据结构——一元多项式提供了一种结构化的方式来表示和操作数学上的多项式。通过实现类和相关的算术操作,我们可以方便地进行计算,这对于数学建模、数值计算和其他相关领域的应用具有重要意义。在...
总结来说,这个"C++多项式运算类"项目展示了如何利用C++的数据结构和内存管理技术来解决特定问题。通过理解和使用这个类,开发者可以更高效地进行数学计算,特别是在处理大量多项式运算的场景下。
标题"一元多项式相加 vs C++代码"指的是使用C++编程语言实现一元多项式的相加功能。在这个项目中,我们将构建一个程序,能够接收用户输入的一元多项式,进行存储、显示,并且可以将两个多项式相加,最后输出结果。VS...
在本项目中,我们关注的是一种特殊的数据结构——一元n次多项式。一元n次多项式是由n个系数与n+1个变量的幂次组合而成的数学表达式,例如 `a_n*x^n + a_{n-1}*x^{n-1} + ... + a_1*x + a_0`。在这个项目中,我们将...
本主题聚焦于如何使用C++模板实现单链表,并基于此实现多项式的加、减、乘等基本运算。下面将详细介绍这两个知识点。 **1. C++模板** C++模板是一种泛型编程工具,它允许我们编写可以处理不同数据类型的代码。模板...
### 东南大学电气工程学院计算机软件实验一报告——多项式处理 #### 需求分析 在数学领域,特别是计算科学中,多项式的表示与运算是一项基础且重要的任务。本实验的目标是通过构建一个合适的数据结构来实现一元...
在编程领域,尤其是在数据结构和算法的学习中,C++是一种常用的编程语言,因其高效和强大的功能而备受青睐。本项目是关于"多项式的运算",它涉及到计算机科学中的一个重要概念,即如何用程序来处理数学上的多项式...
该数据结构课程设计的核心是利用C++的STL(Standard Template Library)库来实现一元多项式的运算。STL是一个包含容器(如list)、迭代器、算法和函数对象的C++标准库,它极大地简化了数据结构和算法的实现。 在本...
C++作为一种强大的、面向对象的编程语言,提供了丰富的数据结构和算法库,使得实现多项式的四则运算变得可能。本篇文章将深入探讨如何使用C++来计算如"2x^2 + 3x^3"这样的多项式的加法、减法、乘法和除法。 首先,...
本实验主要探讨了如何使用C或C++编程语言实现多项式的运算,这是数据结构中一个重要且实用的应用。多项式运算通常涉及加法、减法、乘法以及求导等数学操作,这些操作在计算机图形学、数值计算、信号处理等领域有着...
在本项目"用C++编写的实现多项式运算"中,我们将会探讨如何使用C++来处理和操作多项式。 首先,我们需要理解多项式的基本概念。一个多项式是由常数、变量和这些项的系数组合而成的数学表达式,例如\( ax^2 + bx + c...
通过以上方法,我们可以实现一个完整的C++多项式运算库,支持多项式的加减乘除运算。这个库可以进一步扩展,例如添加其他高级功能,如求导、积分、求解方程等。希望这个解释对你理解C++中的多项式运算有所帮助。
在C++编程中,链表是一种非常重要的数据结构,...通过这种方式,我们可以利用C++的面向对象特性,用链表类来高效地处理多项式的加法和乘法运算。这样的实现不仅易于理解和维护,而且可以方便地扩展到更复杂的数学运算。
2. **多项式类设计**:创建一个名为`Polynomial`的类,封装多项式的操作。类中可以有一个私有的`Term`链表或数组,用于存储多项式的各个项。类应提供构造函数、析构函数以及添加、删除项的方法。 3. **加减法**:...
编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。该程序有以下几个功能: 1. 多项式求和 输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc (提示:调用CreatePolyn(polynomial &P,int ...
本主题关注的是如何使用链表这一数据结构来实现两个多项式的运算,具体来说,是用C++语言来完成。链表是一种动态数据结构,允许在运行时添加或删除元素,这使得它非常适合表示和操作多项式。 首先,我们需要定义一...
- **设计与实现**:介绍所选择的数据结构(链表)和编程语言(C++),以及`Term`和`Polynomial`类的设计。 - **算法流程**:详细阐述上述加法运算的步骤。 - **代码实现**:展示关键的C++代码片段,如`Term`和`...
在这个基于C++的项目中,我们探讨的是如何实现一个多项式方程计算的系统,它能够执行多项式的加法、减法、乘法操作,以及进行代值计算和求导运算。这些功能对于理解和应用数学概念,特别是在数值分析和算法设计方面...
- **乘法运算符重载** (`Polynomial operator*(const Polynomial &poly)`): 实现两个多项式的乘法运算。 - **代入求值** (`float Eval(float x)`): 将一个数值代入多项式求值。 - **添加项** (`void NewTerm...