Условие задачи
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы для вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта-многочлена, вывод на экран описания многочлена. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Алгоритм работы
Программа содержит следующие процедуры:
vvod() - ввод многочлена,
vichisl() - вычисление многочлена по заданному значению аргумента,
slozh(Mnogochlen mA, Mnogochlen mB) - многочлен создается из суммы многочленов А и В,
vichit(Mnogochlen mA, Mnogochlen mB) - многочлен создается из разности многочленов А и В,
umnozh(Mnogochlen mA, Mnogochlen mB) - многочлен создается из произведения многочленов А и В,
vivod() - вывод многочлена.
Листинг программы
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
class Mnogochlen
{
int a[100], n;
public: void vvod();
void vichisl();
void slozh(Mnogochlen mA, Mnogochlen mB);
void vichit(Mnogochlen mA, Mnogochlen mB);
void umnozh(Mnogochlen mA, Mnogochlen mB);
void vivod();
};
void main()
{
Mnogochlen a,b,c;
a.vvod();
//a.vivod();
//a.vichisl();
//a.vvod();
b.vvod();
c.umnozh(a,b);
cout<<"C(x) = ";
c.vivod();}
void Mnogochlen::vvod()
{
cout<<endl;
cout<<"vvedite stepen' mnogochlena: "; cin>>n;
//cout<<endl;
cout<<"vvedite koefficienti\n";
for (int k=0;k<=99;k++) {a[k]=0;}
for (int i=0;i<=n;i++) {cout<<" a"<<i<<" = "; cin>>a[i];}
//cout<<endl;
}
void Mnogochlen::vivod()
{
int f;
f=0;
//cout<<endl;
for (int i=n;i>=0;i--)
if (a[i]!=0)
{ if(f==0){if(i!=0)cout<<a[i]<<"*x^"<<i; else cout<<a[i];
f++;}
else {if(i!=0)
if(a[i]>0) cout<<"+"<<a[i]<<"*x^"<<i;
else cout<<a[i]<<"*x^"<<i;
else
if(a[i]>0) cout<<"+"<<a[i];
else cout<<a[i];
f++;} }
if (f==0) {cout<<0;}
cout<<endl;
}
void Mnogochlen::vichisl()
{
cout<<endl;
int x,v,vx;
v=0;
cout<<"vvedite X: "; cin>>x;
vx=1;
for (int i=0;i<=n;i++) { v=v+a[i]*vx; vx=vx*x;}
cout<<"f("<<x<<") = "<<v;
cout<<endl;
}
void Mnogochlen::slozh(Mnogochlen mA, Mnogochlen mB)
{
for (int k=0;k<=99;k++) {a[k]=0;}
if (mA.n>mB.n) n=mA.n; else n=mB.n;
for (int i=0;i<=n;i++) {a[i]=mA.a[i]+mB.a[i]; }
}
void Mnogochlen::vichit(Mnogochlen mA, Mnogochlen mB)
{
for (int k=0;k<=99;k++) {a[k]=0;}
if (mA.n>mB.n) n=mA.n; else n=mB.n;
for (int i=0;i<=n;i++) {a[i]=mA.a[i]-mB.a[i]; }
}
void Mnogochlen::umnozh(Mnogochlen mA, Mnogochlen mB)
{
for (int k=0;k<=99;k++) {a[k]=0;}
n=mA.n+mB.n;
for (int i=0;i<=mA.n;i++) for (int j=0;j<=mB.n;j++) {a[i+j]=a[i+j]+mA.a[i]*mB.a[j]; }
}
|
Набор тестов к программе
Задача решена:
Автор: Шихов Антон
группа: 121Ми
год: 2008
|