Форум программистов, компьютерный форум CyberForum.ru

полиномы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
nevod
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 16
04.02.2010, 13:32     полиномы #1
Не могу отыскать ошибку перемножения двух полиномов. Помогите пожалуйста!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Polynomial Polynomial::operator*( const Polynomial& r )
{
   Polynomial temp;
   int s = 1;    // subscript location for temp coefficients and exponents
 
   for ( int x = 0; ( x < 100 ) && ( x == 0 || coefficients[ x ] != 0 ); ++x )
      for ( int y = 0; ( y < 100 ) && ( y == 0 || r.coefficients[ y ] != 0 ); ++y )
         if ( coefficients[ x ] * r.coefficients[ y ] )
 
            if ( ( exponents[ x ] == 0 ) && ( r.exponents[ y ] == 0 ) )
               temp.coefficients[ 0 ] += coefficients[ x ] * r.coefficients[ y ];
            else {
               temp.coefficients[ s ] = coefficients[ x ] * r.coefficients[ y ];
               temp.exponents[ s ] = exponents[ x ] + r.exponents[ y ];
               ++s;
            }
 
   polynomialCombine( temp );   // combine common terms
   return temp;
} // end function operator*
 
void Polynomial::polynomialCombine( Polynomial& w )
{
   Polynomial temp = w;
   int exp;
 
   // zero out elements of w
   for ( int x = 0; x < 100; x++ ) {
      w.coefficients[ x ] = 0;
      w.exponents[ x ] = 0;
   } 
 
   for ( x = 1; x < 100; ++x ) {
      exp = temp.exponents[ x ];
 
      for ( int y = x + 1; y < 100; y++ )
         if ( exp == temp.exponents[ y ] ) {
            temp.coefficients[ x ] += temp.coefficients[ y ];
            temp.exponents[ y ] = 0;
            temp.coefficients[ y ] = 0;
         } 
   }
 
   w = temp;
} // end function polynomialCombine
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 13:32     полиномы
Посмотрите здесь:

Полиномы чебышева C++
C++ Полиномы Эрмита
По а и полиному PN(x) получить полиномы QN+1(x)=(x-a)*PN(x) и RN+1(x)=(x+a)*PN(x) C++
C++ Полиномы
C++ STL. Полиномы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.02.2010, 13:59     полиномы #2
хоть пару слов пояснений напиши. или еще лучше - на примере проиллюстрируй чего ты ожидаешь. например, имеются такие два полинома с максимальным числом элементов 5:

pol0 [5] = { 1, 2, 1, 0, 0 };
pol1 [5] = { 1, 3, 4, 5, 0 };

политом-произведение:

polProduct [5];

как получаются и чему должны быть равны элементы?

polProduct [0] == ?
polProduct [1] == ?
polProduct [2] == ?
polProduct [3] == ?
polProduct [4] == ?
faton99
 Аватар для faton99
7 / 7 / 0
Регистрация: 13.01.2010
Сообщений: 82
04.02.2010, 14:04     полиномы #3
Может в этом проблема
Цитата Сообщение от nevod Посмотреть сообщение
if ( coefficients[ x ] * r.coefficients[ y ] )
? Или я не всё об if знаю
nevod
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 16
04.02.2010, 15:34  [ТС]     полиномы #4
всё работает правильно , проблема была в выводе...спасибо,что смотрели.

Добавлено через 2 минуты
Цитата Сообщение от faton99 Посмотреть сообщение
Может в этом проблема? Или я не всё об if знаю
if истинно в тех случаях, когда значение в скобках != 0 и не важно 1 там или какоето инное число.
Yandex
Объявления
04.02.2010, 15:34     полиномы
Ответ Создать тему
Опции темы

Текущее время: 22:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru