程序如下:
#include<iostream>
#include<iomanip>
using namespace std
class very_big_number
{
public:
int section_of_number
very_big_number(int number) //每9位为1段
{
section_of_number = number
}
int *p_section_list = new int[section_of_number]
void input()
{
cout <<"输入数字,每次输入9位 "
for (int i = section_of_numberi >0i--)cin >>p_section_list[i]
}
void output()
{
cout <<"the number is " <<p_section_list[section_of_number]
for (int i = section_of_number - 1i >悉吵0i--)cout <<setw(9) <<setfill('0') <<p_section_list[i]
cout <<endl
}
}
int main()
{
int section_of_number1
cout <<"enter section_of_number1 "
cin >冲陆耐>section_of_number1
very_big_number number1(section_of_number1)
number1.input()
number1.output()
int section_of_number2
cout <<"enter section_of_number2 "
cin >>section_of_number2
very_big_number number2(section_of_number2)
number2.input()
number2.output()
int sum_section
if (section_of_number1 <section_of_number2)sum_section = section_of_number2 + 1
else sum_section = section_of_number1 + 1 //计算2个数的和
very_big_number sum_of_them(sum_section)
for (int i = 1i <sum_section + 1i++)
{
sum_of_them.p_section_list[i] = 0
}
int max = 999999999
int if_into = 0
int j = 1
for (j <section_of_number1 + 1 &散春&j <section_of_number2 + 1j++)
{
int temp = number1.p_section_list[j] + number2.p_section_list[j] + if_into
if (temp >max)
{
if_into = 1
sum_of_them.p_section_list[j] = temp - max - 1
}
else
{
if_into = 0
sum_of_them.p_section_list[j] = temp
}
}
int *p = number1.p_section_list
if (j <section_of_number1 + 1) p = number1.p_section_list
else if (j <section_of_number2 + 1) p = number2.p_section_list
for (j<sum_sectionj++)
{
int temp = p[j] + if_into
if (temp >max)
{
if_into = 1
sum_of_them.p_section_list[j] = temp - max - 1
}
else
{
if_into = 0
sum_of_them.p_section_list[j] = temp
}
}
if (if_into)sum_of_them.p_section_list[j] = 1
cout <<endl <<"the sum of the is "
sum_of_them.output()
cout <<"end"
system("pause>nul")
return 0
}
扩展资料:
线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
在稍复杂的线性表中,一个数据元素可由多个数据项(item)组成,此种情况下常把数据元素称为记录(record),含有大量记录的线性表又称文件(file)。
线性表中的个数n定义为线性表的长度,n=0时称为空表。在非空表中每个数据元素都有一个确定的位置,如用ai表示数据元素,则i称为数据元素ai在线性表中的位序。
先说如何调用的,用高斯消元法做的#include<iostream.h>
#include"01.h"
void main()
{
equation a
a.InputData()
a.solve_eqution()
cin.get()
cin.get()
}
下面是以前写的类,可能要你自己修改一下
#include<iomanip.h>
const int Max_Number=20
class equation
{
private:
int number //方程个数
char value[Max_Number] //未知量
double modulus[Max_Number][Max_Number] //方程系数
double constant[Max_Number]//右端常数
public:
equation(int _number=0) //构造函数
void InputData() //输入数据
void solve_eqution() //高斯全主元消去
void gauss_all_valueiaoqu()//Gauss全主元消去法
void gauss_calculate() //高斯消去法以后计算未知量的结果
void evaluechange_hang(int m,int n)
void evaluechange_a_lie(int m,int n)
void evaluechange_value(int m,int n)
}
equation::equation(int _number)
{
number=_number
}
//----------------------------初始化数据为0
void equation::InputData()
{
int i,j
if(number==0)
{
cout<<"输入方程的个数:"
cin>>number
}
//--------------初始化变量符号为默认的a,b,c..
for(i=0i<numberi++)
value[i]='a'+i
//---------输入数据------01.提示如何输汪神入
cout<<"====================================================\n"
cout<<"请在每个方程里输入"<<number<<"系数和一个常数:\n"
cout<<"例:\n方程:a"
for(i=1i<numberi++)
{
cout<<"+"<<i+1<<value[i]
}
cout<<"=10\n"
cout<<"应输入:"
for(i=0i<numberi++)
cout<<i+1<<" "
cout<<"10\n"
cout<<"==============================\n"
//---------02.输入每个方程
for(i=0i<轮陵肢numberi++)
{
cout<<"输入方程"<<i+1<<":"
for(j=0j<numberj++)
cin>>modulus[i][j]
cin>>constant[i]
}
}
//高斯全主元排列求解方程
void equation::solve_eqution()
{
int i,j
gauss_all_valueiaoqu()
if(modulus[number-1][number-1]!=0)
{
gauss_calculate()
for(i=0i<numberi++) //输出结果
{
for(j=0value[j]!='a'+i&&j<numberj++)
cout<<value[j]<<"="<<constant[j]<<endl
}
}
else
cout<<"系数行列式等于腊世零,方程没有唯一的解.\n"
}
void equation::gauss_all_valueiaoqu() //Gauss全主元消去法
{
int i,j,k,mavaluei,mavaluejdouble lik
cout<<"用Gauss全主元消去法结果如下:\n"
for(k=0k<number-1k++)
{
for(mavaluei=mavaluej=i=ki<numberi++)
{
for(j=kj<numberj++)
if(modulus[i][j]>modulus[mavaluei][ mavaluej])
{ mavaluei=i
mavaluej=j
}
}
if(mavaluei!=k)
evaluechange_hang(k,mavaluei)
if(mavaluej!=k)
{
evaluechange_a_lie(mavaluej,k) //交换两列
evaluechange_value(mavaluej,k)
}
for(i=k+1i<numberi++)
{
lik=modulus[i][k]/modulus[k][k]
for(j=kj<numberj++)
modulus[i][j]=modulus[i][j]-modulus[k][j]*lik
constant[i]=constant[i]-constant[k]*lik
}
}
}
void equation::gauss_calculate()//高斯消去法以后计算未知量的结果
{
int i,jdouble sum_avalue
constant[number-1]=constant[number-1]/modulus[number-1][number-1]
for(i=number-2i>=0i--)
{
for(j=i+1,sum_avalue=0j<numberj++)
sum_avalue+=modulus[i][j]*constant[j]
constant[i]=(constant[i]-sum_avalue)/modulus[i][i]
}
}
void equation::evaluechange_hang(int m,int n) //交换a[][]中和b[]两行
{
int jdouble temp
for(j=0j<numberj++)
{ temp=modulus[m][j]
modulus[m][j]=modulus[n][j]
modulus[n][j]=temp
}
temp=constant[m]
constant[m]=constant[n]
constant[n]=temp
}
void equation::evaluechange_a_lie(int m,int n) //交换a[]中的两列
{ double tempint i
for(i=0i<numberi++)
{ temp=modulus[i][m]
modulus[i][m]=modulus[i][n]
modulus[i][n]=temp
}
}
void equation::evaluechange_value(int m,int n)//交换未知量x[m]与x[n]
{ char temp
temp=value[m]
value[m]=value[n]
value[n]=temp
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)