Глава II
§ 2.1. Программа
Для начала опишем программу, не расписывая подробно подпрограммы.
#include <iostream> //подключаем стандартную библиотеку
#include <cmath> //подключаем математическую библиотеку
#include <string> //подключаем библиотеку для работы со строками
using namespace std;
class mn //дали имя классу
{ int a[256];
int n; int k;
public:
void Nul(); //обнуление
mn operator +(mn c); //сложение
mn operator -(mn c); // вычитание
mn operator *(mn c); //умножение
mn operator /(mn c); //деление с остатком
mn operator =(mn c); // Присваивание
mn operator ^(int c); // возведение в натуральную степень k
mn operator ==(mn c); //проверка на равенство многочленов
void vvod(); //ввод многочлена
void Print(); //вывод многочлена на экран
void proizvodnaya(); //производная многочлена
void vtochkex0(); //значение многочлена в точке x0
};
int main ()
{ mn a, b, c; int k;
srand(time(0)); //генератор случайных чисел
a.vvod(); //заполняем первый многочлен
a.Print(); //выводим первый многочлен
cout<<endl;
b.vvod(); //заполняем второй многочлен
b.Print(); //выводим второй многочлен
a.vtochkex0(); //ищем значение первого многочлена в точке x0
cout<<endl;
a.proizvodnaya(); //ищем производную первого многочлена
cout<<endl;
cout<<"Vvedite stepen: ";
cin>>k;//вводим степень
cout<<"A ^ "<<k;
c=a^k; //возводим в степень первый многочлен
c.Print(); //выводим на экран результат возведения в степень
cout<<endl;
cout<<"A + B : ";
c=a+b; //складываем первый и второй многочлены
c.Print(); //выводим сумму первого и второго многочленов
cout<<"A * B : ";
c=a*b; //умножаем первый и второй многочлены
c.Print(); //выводим произведение первого и второго многочленов
cout<<"A / B : ";
c=a/b; //делим с остатком первый многочлен на второй
c.Print(); //выводим деление с остатком первого многочлена на второй
cout<<"A - B : ";
c=a-b; //вычитаем из первого многочлена второй многочлен
c.Print(); //выводим разность первого и второго многочленов
cout<<"A <> B : ";
a==b; //сравниваем два многочлена
cout<<endl;
system ("PAUSE");
return 0;
}
Далее рассмотрю и опишу отдельно каждую подпрограмму.
§ 2.2. Операция обнуления
void mn :: Nul()
{ for (int i=n;i>0;i--) a[i]=0;} //присваиваем всем элементам многочлена значение 0
§ 2.3. Операция сложения
mn mn :: operator +(mn c)
{ mn d; int i; int max;
max=0; //переменная для хранения максимальной длины многочлена
d.n=n; //присваиваем результативному многочлену длину
if (n>c.n) //находим максимальную длину многочлена из двух данных, если первый больше, то:
{for (i=c.n+1; i<n+1; i++) //увеличиваем длину второго многочлена до длины первого многочлена
c.a[i]=0; //добавляем недостающие элементы во второй многочлен, задавая им значение 0
max=n;} //заносим в переменную максимальную длину многочлена
else if (c.n>n) //если второй многочлен больше, то:
{for (i=n+1; i<c.n; i++) //увеличиваем длину первого многочлена до длины второго многочлена
a[i]=0; //добавляем недостающие элементы в первый многочлен, задавая им значение 0
max=c.n;} //заносим в переменную максимальную длину многочлена
else max=n; //заносим в переменную максимальную длину многочлена
for (i=max; i>0; i--)
d.a[i]=a[i]+c.a[i]; //пробегая оба многочлена, заносим в результативный сумму элементов каждого
cout<<endl;
d.n=max; //длину результативного многочлена приравниваем значению переменной
return d;} // возвращаем результативный многочлен