ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 03.02.2024

Просмотров: 197

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Программа позволяет выполнять основные операции над многочленами.

Многочлены представлены в стандартном виде, начиная от большей степени.

« ^ » обозначает, какая степень у данного x.

5. Заключение


В данной курсовой работе мы, используя полученные ранее математические знания, написали работоспособную программу, которая может: складывать, вычитать, умножать, делить многочлены натуральной степени, находить значение в указанной точке, производную от многочлена, а так же настроены вывод результатов и ввод данных, который делает «общение» с пользователем более простым и понятным.

Данную программу можно использовать для решения и проверки задач средней, а так же старшей школ.

Список использованных источников


  1. Ю. А. Макарычев Алгебра. 7 класс. Учебник для общеобразовательных учреждений – СПб.: Просвещение, 2007

  2. Н. Я. Виленкин Математика. 5 класс. Учебник для общеобразовательных учреждений – СПб.: Мнемозина, 2005

  3. И. Г. Семакин, А.П. Шестаков Основы программирования. Среднее профессиональное образование – СПб.: Высшая школа, НМЦ СПО, Мастерство, 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<else{

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<else{

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<cout<<"Наибольший общий делитель двух многочленов: "<
c=NOD(a,b);

c.vivod();

system ("PAUSE");

return 0;

}

1   2   3   4   5   6   7   8