Добавлен: 03.02.2024
Просмотров: 198
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
2.2 Неформальное изложение алгоритма
3.1 Тесты для сложения двух многочленов
3.2 Тесты для вычитания двух многочленов
3.3 Тесты для умножения двух многочленов
3.4 Тесты для деления двух многочленов
3.5 Тесты для нахождения остатка от деления
3.6 Тесты для операции отношения равно
3.7 Тесты для операции отношения не равно
3.8 Тесты для операции возведения многочлена в натуральную степень k
3.9 Тесты для вычисления производной от многочлена
3.10 Тесты для вычисления значения в точке x0
3.11 Тесты на вывод многочлена
3.12 Тесты на нахождение наибольшего общего делителя двух многочленов
Программа позволяет выполнять основные операции над многочленами.
Многочлены представлены в стандартном виде, начиная от большей степени.
« ^ » обозначает, какая степень у данного x.
5. Заключение
В данной курсовой работе мы, используя полученные ранее математические знания, написали работоспособную программу, которая может: складывать, вычитать, умножать, делить многочлены натуральной степени, находить значение в указанной точке, производную от многочлена, а так же настроены вывод результатов и ввод данных, который делает «общение» с пользователем более простым и понятным.
Данную программу можно использовать для решения и проверки задач средней, а так же старшей школ.
Список использованных источников
-
Ю. А. Макарычев Алгебра. 7 класс. Учебник для общеобразовательных учреждений – СПб.: Просвещение, 2007 -
Н. Я. Виленкин Математика. 5 класс. Учебник для общеобразовательных учреждений – СПб.: Мнемозина, 2005 -
И. Г. Семакин, А.П. Шестаков Основы программирования. Среднее профессиональное образование – СПб.: Высшая школа, НМЦ СПО, Мастерство, 2001
Приложения
1. Найти наибольший общий делитель многочленов P(x) и Q(x).
#include
#include
#include
using namespace std;
class mnogochlen {
int stepen;
int koof[100];
public:
void sozdanie();/* создание многочлена */
void vivod();/* выводмногочлена */
mnogochlen operator +(mnogochlen m); /* сложениемногочленов */
mnogochlen operator -(mnogochlen m); /* вычитаниемногочленов */
mnogochlen operator *(mnogochlen m); /* умножениемногочленов*/
bool operator ==(mnogochlen m); /* равнылимногочлены? */
bool operator !=(mnogochlen m); /* не равны ли многочлены? */
mnogochlen proizvodnaa(); /* нахождение производной от многочлена */
double znachenie(double x);/* нахождение значения при заданном x */
mnogochlen stepeny(int k); /*возведение многочлена в степень*/
mnogochlen operator /(mnogochlen m);/*делениемногочленов*/
mnogochlen operator %(mnogochlen m);/*нахождение остатка от деления*/
};
// находжение остатака от деления
mnogochlen mnogochlen :: operator %(mnogochlen m)
{ mnogochlen c,d,g; bool a;
int i,l,k;
l=stepen-m.stepen;
for(i=0;i<100;i++)
{c.koof[i]=0; d.koof[i]=0;}
while(stepen>=m.stepen)
{ c.stepen=stepen-m.stepen;
c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen];
d=m*c;
*this=*this-d;
}
c.stepen=l;
return *this;
}
//Деление многочленов
mnogochlen mnogochlen :: operator /(mnogochlen m)
{ mnogochlen c,d,g;
int i,l,k;
l=stepen-m.stepen;
for(i=0;i<100;i++)
{c.koof[i]=0; d.koof[i]=0;}
while(stepen>=m.stepen)
{ c.stepen=stepen-m.stepen;
c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen];
d=m*c;
*this=*this-d;
}
c.stepen=l;
return c;
}
/* Нахождение производной от многочлена */
mnogochlen mnogochlen::proizvodnaa()
{mnogochlen c; int i, j;
c.stepen=stepen;
for(i=1;i<=stepen;i++)
{c.koof[i-1]=koof[i]*i;}c.stepen--;
return c;
}
/* Равны ли многочлены?*/
bool mnogochlen :: operator ==(mnogochlen m)
{ bool priznak;
int i;
if(stepen!=m.stepen){priznak=0;}
else {for(i=0;i<=stepen;i++)
{
if(koof[i]!=m.koof[i]) {priznak=0;break;}
else {priznak=1;}
} }
return priznak;
}
/* не равны ли многочлены?*/
bool mnogochlen :: operator !=(mnogochlen m)
{ bool priznak;
int i;
if(stepen!=m.stepen){priznak=0;}
else {for(i=0;i<=stepen;i++)
{
if(koof[i]!=m.koof[i]) {priznak=1;break;}
else {priznak=0;}
} }
return priznak;
}
/* умножение многочленов */
mnogochlen mnogochlen :: operator *(mnogochlen m)
{mnogochlen d;
int i,j,k;
k=stepen+m.stepen;
for (i=0;i<=k;i++)
{
d.koof[i]=0;
}
for (i=0;i<=stepen;i++)
{
for(j=0;j<=m.stepen;j++)
{
d.koof[i+j]+=koof[i]*m.koof[j];
}
}
d.stepen=m.stepen+stepen;
return d ;
}
/* разность многочленов */
mnogochlen mnogochlen :: operator -(mnogochlen m)
{mnogochlen d;
int i,max;
if(stepen>m.stepen) max=stepen; else max=m.stepen;
if(stepen>m.stepen)
{
for(i=m.stepen+1;i<=max;i++)
m.koof[i]=0;}
else
{
for(i=stepen+1;i<=max;i++)
koof[i]=0;
}
for (i=0;i<=max;i++)
{
d.koof[i]=koof[i]-m.koof[i];
}
d.stepen=max;
for(i=max;i>0;i--)
{if(d.koof[i]==0){d.stepen--;} else{break;}}
return d ;
}
/* нахождение значения многочлена*/
double mnogochlen::znachenie(double x)
{double y;
int i;
y=koof[0];
for(i=1;i<=stepen;i++)
{y+=pow(x,i)*koof[i];}
return y;}
/* сложение многочленов*/
mnogochlen mnogochlen :: operator +(mnogochlen m)
{mnogochlen d;
int i,max;
if(stepen>m.stepen) max=stepen; else max=m.stepen;
if(stepen>m.stepen)
{
for(i=m.stepen+1;i<=max;i++)
m.koof[i]=0;}
else
{ for(i=stepen+1;i<=max;i++)
koof[i]=0;
}
for (i=0;i<=max;i++)
{
d.koof[i]=koof[i]+m.koof[i];
}
d.stepen=max;
for(i=max;i>0;i--)
{if(d.koof[i]==0){d.stepen--;} else{break;}}
return d ;
return d ;
}
/* Создание многочлена */
void mnogochlen::sozdanie()
{ int i;
cout<<”Введите степень многочлена (натуралное число)"<
cin>>stepen;
cout<<"Введите свободный элемент"<
cin>>koof[0];
for(i=1;i<=stepen;i++)
{ cout<<"Введите x в степени "<
cin>>koof[i];
}
}
/* вывод многочлена */
void mnogochlen::vivod()
{int j,i;
cout<<"y=";
if(stepen==0){cout<
if(koof[stepen]>0)
{
cout<
}
else
{
if(koof[stepen]<0) {cout<
else{cout<<"";}
}
j=stepen-1;
for(i=j;i>=1;i--)
{ if(koof[i]>0)
{ cout<<"+"<
else
{ if(koof[i]<0) {cout<
else{cout<<"";}}
}
if(koof[0]>0)
{ cout<<"+"<
else
{ if(koof[0]<0) {cout<
else{cout<
}
}
}
/* возведение многочлена в степень */
mnogochlen mnogochlen ::stepeny(int k)
{int i;
mnogochlen d,c;
c.stepen=stepen;
for(i=0;i<=stepen;i++)
{c.koof[i]=koof[i];}
d.stepen=0;
d.koof[0]=1;
for(i=1;i<=k;i++)
{d=d*c;
}
return d;
}
int main()
{ mnogochlen P,Q,c; double s,r;
system("chcp 1251");
cout<<"Введите первый многочлен”<
P.sozdanie();
P.vivod();
cout<<"Введите второй многочлен"<
Q.sozdanie();
Q.vivod();
cout<<"Введите степень, в которую следует возвести первый многочлен"<
cin>>s;
P=P.stepeny(s);
cout<<" Введите степень, в которую следует возвести второй многочлен "<
cin>>r;
Q=Q.stepeny(r);
cout<<"Результат операций P^s-Q^r"<
c=P-Q;
c.vivod();
system ("PAUSE");
return 0;
}
2. На
#include
#include
#include
using namespace std;
class mnogochlen {
public:
int stepen;
int koof[100];
void sozdanie();
void vivod();
mnogochlen operator +(mnogochlen m); /* ñëîæåíèå */
mnogochlen operator -(mnogochlen m); /* âû÷èòàíèå */
mnogochlen operator *(mnogochlen m); /* óìíîæåíèå */
bool operator ==(mnogochlen m); /* ñðàâíåíèå ìíîãî÷ëåíîâ */
bool operator !=(mnogochlen m); /* ñðàâíåíèå ìíîãî÷ëåíîâ */
mnogochlen proizvodnaa(); /* ïðîèçâîäíàÿ */
double znachenie(double x);/* íàõîæäåíèå çíà÷åíèÿ ôóíêöèè*/
mnogochlen stepeny(int k); /*âîçâåäåíèå ìíîãî÷ëåíà â ñòåïåíü*/
mnogochlen operator /(mnogochlen m);/*äåëåíèå ìíîãî÷ëåíà*/
mnogochlen operator %(mnogochlen m);/*îñòàòîê îò äåëåíèÿ ìíîãî÷ëåíîâ*/
mnogochlen NOD(mnogochlen a, mnogochlen b);
};
// Остаток от деления
mnogochlen mnogochlen :: operator %(mnogochlen m)
{ mnogochlen c,d,g; bool a;
int i,l,k;
l=stepen-m.stepen;
for(i=0;i<100;i++)
{c.koof[i]=0; d.koof[i]=0;}
while(stepen>=m.stepen)
{ c.stepen=stepen-m.stepen;
c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen];
d=m*c;
*this=*this-d;
}
c.stepen=l;
return *this;
}
//Деление многочленов
mnogochlen mnogochlen :: operator /(mnogochlen m)
{ mnogochlen c,d,g;
int i,l,k;
l=stepen-m.stepen;
for(i=0;i<100;i++)
{c.koof[i]=0; d.koof[i]=0;}
while(stepen>=m.stepen)
{ c.stepen=stepen-m.stepen;
c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen];
d=m*c;
*this=*this-d;
}
c.stepen=l;
return c;
}
/* Производная от многочлена*/
mnogochlen mnogochlen::proizvodnaa()
{mnogochlen c; int i, j;
c.stepen=stepen;
for(i=1;i<=stepen;i++)
{c.koof[i-1]=koof[i]*i;}c.stepen--;
return c;
}
/* Равны ли многочлены?*/
bool mnogochlen :: operator ==(mnogochlen m)
{ bool priznak;
int i;
if(stepen!=m.stepen){priznak=0;}
else {for(i=0;i<=stepen;i++)
{
if(koof[i]!=m.koof[i]) {priznak=0;break;}
else {priznak=1;}
} }
return priznak;
}
/* Не равны ли многочлены?*/
bool mnogochlen :: operator !=(mnogochlen m)
{ bool priznak;
int i;
if(stepen!=m.stepen){priznak=0;}
else {for(i=0;i<=stepen;i++)
{
if(koof[i]!=m.koof[i]) {priznak=1;break;}
else {priznak=0;}
} }
return priznak;
}
/* Произведение многочленов*/
mnogochlen mnogochlen :: operator *(mnogochlen m)
{mnogochlen d;
int i,j,k;
k=stepen+m.stepen;
for (i=0;i<=k;i++)
{
d.koof[i]=0;
}
for (i=0;i<=stepen;i++)
{
for(j=0;j<=m.stepen;j++)
{
d.koof[i+j]+=koof[i]*m.koof[j];
}
}
d.stepen=m.stepen+stepen;
return d ;
}
/* Разность многочленов */
mnogochlen mnogochlen :: operator -(mnogochlen m)
{mnogochlen d;
int i,max;
if(stepen>m.stepen) max=stepen; else max=m.stepen;
if(stepen>m.stepen)
{
for(i=m.stepen+1;i<=max;i++)
m.koof[i]=0;}
else
{
for(i=stepen+1;i<=max;i++)
koof[i]=0;
}
for (i=0;i<=max;i++)
{
d.koof[i]=koof[i]-m.koof[i];
}
d.stepen=max;
for(i=max;i>0;i--)
{if(d.koof[i]==0){d.stepen--;} else{break;}}
return d ;
}
/* нахождение значения значения в точке x0*/
double mnogochlen::znachenie(double x)
{double y;
int i;
y=koof[0];
for(i=1;i<=stepen;i++)
{y+=pow(x,i)*koof[i];}
return y;}
/* сложение многочленов */
mnogochlen mnogochlen :: operator +(mnogochlen m)
{mnogochlen d;
int i,max;
if(stepen>m.stepen) max=stepen; else max=m.stepen;
if(stepen>m.stepen)
{
for(i=m.stepen+1;i<=max;i++)
m.koof[i]=0;}
else
{ for(i=stepen+1;i<=max;i++)
koof[i]=0;
}
for (i=0;i<=max;i++)
{
d.koof[i]=koof[i]+m.koof[i];
}
d.stepen=max;
for(i=max;i>0;i--)
{if(d.koof[i]==0){d.stepen--;} else{break;}}
return d ;
return d ;
}
/* Создание многочлена */
void mnogochlen::sozdanie()
{ int i;
cout<<"Введите степень многочлена (натуральное число):"<
cin>>stepen;
cout<<"введите свободный элемент"<
cin>>koof[0];
for(i=1;i<=stepen;i++)
{ cout<<"Введите x в степени "<
cin>>koof[i]; }}
/* вывод многочлена */
void mnogochlen::vivod()
{int j,i;
cout<<"y=";
if(stepen==0){cout<
if(koof[stepen]>0)
{
cout<
}
else
{
if(koof[stepen]<0) {cout<
else{cout<<"";}
}
j=stepen-1;
for(i=j;i>=1;i--)
{ if(koof[i]>0)
{ cout<<"+"<
else
{ if(koof[i]<0) {cout<
else{cout<<"";}}
}
if(koof[0]>0)
{ cout<<"+"<
else
{ if(koof[0]<0) {cout<
else{cout<
/* возведение многочлена в степень */
mnogochlen mnogochlen ::stepeny(int k)
{int i;
mnogochlen d,c;
c.stepen=stepen;
for(i=0;i<=stepen;i++)
{c.koof[i]=koof[i];}
d.stepen=0;
d.koof[0]=1;
for(i=1;i<=k;i++)
{d=d*c; }
return d;}
/*Нахождение НОД двух многочленов*/
mnogochlen NOD(mnogochlen a, mnogochlen b)
{mnogochlen r1, r2, r3;
if(a.stepen>=b.stepen){r1=a;r2=b;}
else{r1=b;r2=a;}
while(r2.stepen>0)
{ r3=(r1%r2);
if(r3.stepen==0)
{return r2;}
r1=r2; r2=r3; } return r3; }
int main()
{ mnogochlen a,b,c; double y,x,k;bool m; int l;
system("chcp 1251");
cout<<"Первый многочлен: "<
cout<
a.sozdanie();
a.vivod();
cout<
cout<<"Второй многочлен: "<
b.sozdanie();
b.vivod();
cout<
c=NOD(a,b);
c.vivod();
system ("PAUSE");
return 0;
}
1 2 3 4 5 6 7 8