Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

amorua

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
#include<stdio.h>
 
struct frac {
 int up;
 int down;
} ;
 
void FracPrint(struct frac a)
{
  if(a.down == 1) printf("%d",a.up);
  else            printf("%d / %d",a.up,a.down);
}
/* reduce fraction */
struct frac FracReduce(struct frac a)
{ struct frac res;
  int i,tmp;
  res.up=a.up; res.down=a.down;
   
  if(a.up > a.down) tmp=a.down;
  else              tmp=a.up;
   
  for(i=2;i<=tmp;i++)
    if( (res.up % i == 0) && (res.down % i ==0) )
    { res.up = res.up/i; res.down=res.down/i;
      i--;
    }
 
  return res;
}
/* add two fractions */
struct frac FracAdd(struct frac a, struct frac b)
{ struct frac res;
  if((a.up)==0) return b;
  if((b.up)==0) return a;
 
  res.up = a.up*b.down + b.up*a.down;
  res.down=a.down*b.down;
  res = FracReduce(res);
  return res;
}
/* multiply two fractions */
struct frac FracMult(struct frac a, struct frac b)
{ struct frac res;
  res.up = a.up*b.up;
  res.down=a.down*b.down;
  res = FracReduce(res);
  return res;
}
/* read fraction from terminal */
struct frac FracRead(void)
{ struct frac a;
 
  printf("chislitel = ");
  scanf("%d",&a.up);
  printf("znamenatel = ");
  scanf("%d",&a.down);
   
  return a;
}
 
int main(void)
{
  struct frac x;
  struct frac a;
  struct frac y;
  FILE* F;
  char fname[]="polynom.txt";
  int i=0;
   
  printf("Vvedite x:\n");
  x=FracRead();
  printf("Vy vveli x = ");FracPrint(x);
  x=FracReduce(x);
  printf("   ( Posle sokrasheniya x = ");FracPrint(x);printf(" )\n");
   
 
 
  printf("Polynom zadan v fajle %s koefficientami:\n",fname);
   
  F=fopen(fname,"r");
   
  y.up=0;y.down=0;
   
  while(!feof(F))
  {
     fscanf(F,"%d",&a.up);
     fscanf(F,"%d",&a.down);
     if(!feof(F))
     {
      printf("a_n-%d = ",i++);FracPrint(a);printf("\n");
      y = FracAdd(a,FracMult(x,y));
     }  
  }
   
  printf("Znachenie polynoma v tochke x = ");FracPrint(x);
  printf(" : y(x) = ");FracPrint(y);printf("\n");
   
   
  fclose(F);
   
  return 0;
}
 


Всего записей: 429 | Зарегистр. 09-02-2004 | Отправлено: 18:32 13-12-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru