The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Алгоритм"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Алгоритм" 
Сообщение от я Искать по авторуВ закладки on 21-Ноя-05, 13:28  (MSK)
Задача вычислить коэфициенты Котеса ответ вывести в виде таблицы рациональных дробей.
За алгоритм вычисления интеграла взял метод средних прямоугольников. Все действия (+ - * /) происходит в рац. дробях (в виде дроби исп. структура). Только вот программа считает до H4,0 дальше начинает жутко тормозить... я думаю вроблема в больших дробях (числитель и знаменатель становятся БОЛЬШИМИ) Функция сокращения дробей:
struct fraction
{
  int no; // числитель
  int deno; // знаменатель
};

typedef struct fraction fract;

fract convert_fraction(fract f)
{
  int min;
  int no,deno;
  int i;
  
  if(f.no<0&&f.deno<0) // Если числитель и знаменатель отриц
   {
    f.no*=(-1);
    f.deno*=(-1);
   };

  if(f.no==f.deno) // Если равны
   {
    f.no=1;
    f.deno=1;
    return f;
   };
  

  while(f.no%2==0&&f.deno%2==0) // Если оба четны искл четность
   {
     f.no/=2;
     f.deno/=2;
   };
  
        
  if(fabs(f.no)<fabs(f.deno)) // Если оба не четны, находим минимум
   min=fabs(f.no);
  else
   min=fabs(f.deno);

    
  for(i=min;i>=3;i-=2)  // От минимума до 3 перебираем нечетные делители
   {
    
    no=f.no%i;
    deno=f.deno%i;
  
    if((no==0)&&(deno==0)) // Если делится сокращаем
     {
      f.no/=i;
      f.deno/=i;
      
       if(fabs(f.no)<fabs(f.deno)) // Новый минимум
       min=f.no;
       else
       min=f.deno;
      
       i=min;  // Начать с минимума
      
     };
    
    
   };
  
    return f;
};


Как можно ускорить процесс сокращения? или есть какой либо другой метод представления в рациональных дробях?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • Алгоритм, horsh, 20:03 , 21-Ноя-05, (1)  

Сообщения по теме [Сортировка по времени, UBB]

1. "Алгоритм" 
Сообщение от horsh Искать по авторуВ закладки(ok) on 21-Ноя-05, 20:03  (MSK)
>Как можно ускорить процесс сокращения? или есть какой либо другой метод представления
>в рациональных дробях?

http://ru.wikipedia.org/wiki/%D0%9D%D0%9E%D0%94
http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%95%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%B0
http://en.wikipedia.org/wiki/Greatest_common_divisor

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру