Неформальное изложение алгоритма 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Неформальное изложение алгоритма



Алгоритм создания многочлена

· Вводим слепень, которая будет у создаваемого многочлена;

· Вводим свободный элемент многочлена;

· При помощи цикла вводим коэффициенты при х в данном многочлене.

 

void mnogochlen::sozdanie()

{ int i;

 

 cout<<"Введите степень многочлена "<<endl;

 cin>>stepen;

 

 cout<<"Введите свободный элемент"<<endl;

 cin>>koof[0];

 

for(i=1;i<=stepen;i++)

    

{ cout<<"Введите x в степени "<<i<<" ";

cin>>koof[i];

 

}

}

Алгоритм вывода многочлена

· Выводим на экран “ y =”;

· Выводим на экран элемент многочлена с наибольшей степенью;

· Выводим поочередно все элементы многочлена, начиная с большей степени до единицы включительно;

· Если коэффициент при x равен нулю не выводим этот элемент;

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

 

void mnogochlen::vivod()

{int j,i;

 

cout<<"y=";

if(stepen==0){cout<<koof[0];} else{

if(koof[stepen]>0)

     {

                 cout<<koof[stepen]<<"x^"<<stepen;

     }

   

else

{  

                 if(koof[stepen]<0) {cout<<koof[stepen]<<"x^"<<stepen;}

else{cout<<"";}

}

     

j=stepen-1;

   

for(i=j;i>=1;i--)

   

{ if(koof[i]>0)

     { cout<<"+"<<koof[i]<<"x^"<<i;}

         

else

{ if(koof[i]<0) {cout<<koof[i]<<"x^"<<i;}

     

else{cout<<"";}}

}

if(koof[0]>0)

     { cout<<"+"<<koof[0]<<endl;}

         

else

{ if(koof[0]<0) {cout<<koof[i]<<endl;}

     

else{cout<<endl;}

}

}

}

Алгоритм сложения двух многочленов

· Определяем больший из введенных многочленов них по степени;

· Обнуляем в меньшем многочлене коэффициенты при x;

· В новом массиве, который предназначен для сохранения результата, коэффициенты делаем равными нулю;

· При помощи цикла складываем коэффициенты, при одинаковых степенях x;

· Присваиваем полученному многочлену степень, большего из вычитаемых;

· Возвращаем полученный многочлен.

 

Алгоритм вычитания двух многочленов

· Определяем больший из введенных многочленов них по степени;

· Обнуляем в меньшем многочлене коэффициенты при x;

· В новом массиве, который предназначен для сохранения результата, коэффициенты делаем равными нулю;

· При помощи цикла вычитаем коэффициенты, при одинаковых степенях x;

· Присваиваем полученному многочлену степень, большего из вычитаемых;

· Возвращаем полученный многочлен.

 

Алгоритм умножения двух многочленов

· Присваиваем многочлену, предназначенному для сохранения результата степень равную сумме степеней умножаемых многочленов;

· В новом массиве, который предназначен для сохранения результата, коэффициенты делаем равными нулю;

· В двойном цикле поочередно умножаем все коэффициенты по правилам приведенным выше;

· Приводим подобные;

· Возвращаем полученный результат.

 

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; }

 

Алгоритм проверки на равенство двух многочленов

· Сравниваем степени двух многочленов, если они не равны, то, следовательно, не равны и многочлены. Это означает, что дальнейшие действия можно не выполнять. Иначе продолжаем выполнение;

· В цикле сравниваем коэффициенты при x;

· Если коэффициенты, при каком либо x не совпадают, прерываем сравнение. Многочлены не равны. Иначе продолжаем его выполнение.

· Выводим значение булевой переменной, которая и будет указывать: равны ли многочлены или нет.

 

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;

 

}



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 116; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.187.233 (0.008 с.)