КУРСОВАЯ РАБОТА по дисциплине: «Программирование» на тему: «Многочлены». Курсовая программирование. Многочлены
Скачать 295 Kb.
|
3.12 Тесты на нахождение наибольшего общего делителя двух многочленовВозьмем два многочлена, и найдем НОД сами, а затем сверим результат с работой программы. Даны два многочлена А=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 Результаты расчетов «вручную» и при помощи программы совпадают. Даны два многочлена А=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 Результаты расчетов «вручную» и при помощи программы совпадают. Даны два многочлена А=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. ЗаключениеВ данной курсовой работе мы, используя полученные ранее математические знания, написали работоспособную программу, которая может: складывать, вычитать, умножать, делить многочлены натуральной степени, находить значение в указанной точке, производную от многочлена, а так же настроены вывод результатов и ввод данных, который делает «общение» с пользователем более простым и понятным. Данную программу можно использовать для решения и проверки задач средней, а так же старшей школ. Список использованных источниковЮ. А. Макарычев Алгебра. 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;} |