Главная страница

КУРСОВАЯ РАБОТА по дисциплине: «Программирование» на тему: «Многочлены». Курсовая программирование. Многочлены


Скачать 295 Kb.
НазваниеМногочлены
АнкорКУРСОВАЯ РАБОТА по дисциплине: «Программирование» на тему: «Многочлены
Дата05.04.2023
Размер295 Kb.
Формат файлаdoc
Имя файлаКурсовая программирование.doc
ТипКурсовая
#1038801
страница7 из 8
1   2   3   4   5   6   7   8

3.12 Тесты на нахождение наибольшего общего делителя двух многочленов


Возьмем два многочлена, и найдем НОД сами, а затем сверим результат с работой программы.

  1. Даны два многочлена А=x3 +3x2 +3x+2 и В=x3+2x2 +2x+1. Применив алгоритм Евклида, получили НОД(А,В)= x2 +x+1;

Результаты работы программы:

Первый многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент 2

Введите x в степени 1 3

Введите x в степени 2 3

Введите x в степени 3 1

y=x3+3x2+3x+2
Второй многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент1

Введите x в степени 1 2

Введите x в степени 2 2

Введите x в степени 3 1

y=x3+2x2+2x+1
Наибольший общий делитель двух многочленов:

y=1x2+1x+1
Результаты расчетов «вручную» и при помощи программы совпадают.


  1. Даны два многочлена А=x2 –x-3 и В=x+1. Применив алгоритм Евклида, получили НОД(А,В)= -1;

Результаты работы программы:

Первый многочлен:

Введите степень многочлена (натуральное число) 2

Введите свободный элемент-3

Введите x в степени 1 -1

Введите x в степени 2 1

y=1x2-x-3
Второй многочлен:

Введите степень многочлена (натуральное число) 1

Введите свободный элемент 1

Введите x в степени 1 1

y=x+1
Наибольший общий делитель двух многочленов:

y=1
Результаты расчетов «вручную» и при помощи программы совпадают.



  1. Даны два многочлена А=x2 –x-3 и В=x+1. Применив алгоритм Евклида, получили НОД(А,В)= -1;

Результаты работы программы:

Первый многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент -1

Введите x в степени 1 2

Введите x в степени 2 -2

Введите x в степени 3 1

y=1x3-2x2+2x-1
Второй многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент 1

Введите x в степени 1 0

Введите x в степени 2 -1

Введите x в степени 3 1

y=1x3-1x2+1
Наибольший общий делитель двух многочленов:

y=-1x2+2x-2
Результаты расчетов «вручную» и при помощи программы совпадают.


4. Руководство пользователя


Открываем программу «Многочлены» двойным щелчком мыши. Затем следуем инструкциям программы.

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

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

« ^ » обозначает, какая степень у данного 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;}
1   2   3   4   5   6   7   8


написать администратору сайта