2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 
Сообщение16.04.2009, 14:28 


26/02/06
78
Russia, Nizhny Novgorod
Было:
Код:
polinom::polinom(int nn)
  {
  n=nn;
  a=new int[n+1];
  for(int i=0;i<=n;i++)
  a[i]=0;
  }

Стало:
Код:
polinom::polinom(int nn) {
        a.resize(nn);
        for(int i=0;i<=nn;i++)
                a[i]=0;
}

 Профиль  
                  
 
 
Сообщение16.04.2009, 18:20 


09/09/08
30
Россия
ZYVхорошо учту

Добавлено спустя 4 минуты 29 секунд:

Lotos
я не стал перегружать оператор сравнения(компилятор почему-то ругался при вызове в главной программе).вот я реализовал проверки с помощью функций. на равенство вроде работает нормально, а функция grow не совсем.посмотрите что не так?
Код:
friend bool equal (polinom &p,polinom&q);
friend bool grow (polinom &p,polinom&q);

bool equal (polinom &p,polinom&q)
{
   if (p.n!=q.n) return false;
   int i;
   i=p.n;
   while (i>=0)
      {
        if (p.a[i]==q.a[i])
        {
         i--;
        }
        else return false;
      }
    return true;
}

bool grow (polinom &p,polinom&q)
{
if (p.n>q.n) return true;
if (p.n==q.n)
{ int i;
i=p.n;
while (i>=0)
    {
     if (p.a[i]>=q.a[i])
     {
        i--;
     }
     else return false;
    }
    return true;
}
}

и еще хотел узнать вообще по какому принципу мы сравниваем два полинома?сперва проверяем степени, а потом коэффициенты?а что делать в случае сравнения например 6x^3+2x^2+3x^1+4 и 4x^3+5x^2+6x^1+2? я затрудняюсь ответить что из них больше :?

Добавлено спустя 21 минуту 23 секунды:

и еще как лучше реализовать деление полиномов если в виде булевской функции то с какими параметрами
Код:
friend bool divide (polinom &a, polinom &b);

так?
Код:
friend bool divide (polinom &a, polinom &b,polinom &res, polinom &ost);

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

 Профиль  
                  
 
 
Сообщение16.04.2009, 20:08 


26/02/06
78
Russia, Nizhny Novgorod
В чем конкретно у вас проблемы с перезагрузкой? Я сейчас занимаюсь своей эмуляцией FPU, сделал по образцу

http://www.cs.caltech.edu/courses/cs11/ ... p-ops.html

Всё отлично работает.

Операторы деления и т.п. перегружать также, как умножения, сложения и пр.

 Профиль  
                  
 
 
Сообщение16.04.2009, 20:10 


30/09/06
68
Одесса
Вы смешиваете вместе математические вопросы и вопросы программирования.
Математика не сравнивает полиномы, а вам сравнение надо по степеням только, чтобы можно было проводить присваивание. Вы можете реализовать сравнение по коэффициентам, но правила сравнения придумываете тогда сами.
Вопрос деления вообще специфичный. Вы фактически спрашиваете меня про постановку задачи. Не уже ли нельзя спросить препода, что он имел в виду под операцией деления: частное или частное с остатком.

 Профиль  
                  
 
 
Сообщение17.04.2009, 17:25 


09/09/08
30
Россия
ZYV писал(а):
В чем конкретно у вас проблемы с перезагрузкой? Я сейчас занимаюсь своей эмуляцией FPU, сделал по образцу

http://www.cs.caltech.edu/courses/cs11/ ... p-ops.html

Всё отлично работает.

Операторы деления и т.п. перегружать также, как умножения, сложения и пр.

не знаю в чем конкретно, перегружал оператор сравнения ">" при вызове была ошибка название не помню. насчет перегрузки оператора деления я не представляю как это будет выглядеть(там же может происходить деление с остатком).ссылка не помогла :( может покажете реализацию деления, оч надо, плиз

 Профиль  
                  
 
 
Сообщение25.04.2009, 18:30 


09/09/08
30
Россия
последняя моя просьба. Вот реализовал функцию деления полиномов, не работает, посмотрите пожалуйста, где ошибка?
Код:
bool divide(polinom &a,polinom &b,polinom &res,polinom &ost)
{
    bool z = true;
    for(int i=0; i<=b.n; i++)
        if(b.a[i]!=0)
        {
            z=false;
            break;
        }
    if(z) return false;

    if(a.n < b.n)
    {
        res = *(new polinom(0));
        ost = a;
    }
    else
    {
        int qn = a.n - b.n;
        res = (new polinom(qn));
        if(b.n)
            ost = (new polinom(b.n-1);
        else
            ost = (new polinom(0);
    }
    return true;
}

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group