Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
30.05.2020
Размер:
2.79 Кб
Скачать
#include "Math.h"
class CalculateFrac{
	public:
	
		void AddFrac(int a, int b, int c, int d)
		{
			int zero=0;
			int e=b*d;
			int g=a*d+c*b;
			if (g==0)
			{
				zero=1;
				this->a=0;
			}
			else
			{
				if(abs(g)>=e)
				{
					this->a=g/e;
					g=abs(g-=this->a*e);
					if (g==0)
						zero=1;
				}
				else
					this->a=0;
			}
			if(zero==0)
			{
				this->p=(g/this->nod(abs(g),abs(e)));
				this->q=(e/this->nod(abs(g),abs(e)));
			}
			else
			{
				this->p=0;
				this->q=1;
			}
		}
		
		void SubFrac(int a, int b, int c, int d)
		{
			int zero=0;
			int e=b*d;
			int g=a*d-c*b;
			if (g==0)
			{
				zero=1;
				this->a=0;
			}
			else
			{
				if(abs(g)>=e)
				{
					this->a=g/e;
					g=abs(g-=this->a*e);
					if (g==0)
						zero=1;
				}
				else
					this->a=0;
			}
			if(zero==0)
			{
				this->p=(g/this->nod(abs(g),abs(e)));
				this->q=(e/this->nod(abs(g),abs(e)));
			}
			else
			{
				this->p=0;
				this->q=1;
			}
		}

		void MultFrac(int a, int b, int c, int d)
		{
			int zero=0;
			int g=a*c;
			int e=b*d;
			if (g==0)
			{
				zero=1;
				this->a=0;
			}
			else
			{
				if(abs(g)>=e)
				{
					this->a=g/e;
					g=abs(g-=this->a*e);
					if (g==0)
						zero=1;
				}
				else
					this->a=0;
			}
			if(zero==0)
			{
				this->p=(g/this->nod(abs(g),abs(e)));
				this->q=(e/this->nod(abs(g),abs(e)));
			}
			else
			{
				this->p=0;
				this->q=1;
			}
		}

		void DivFrac(int a, int b, int c, int d)
		{
			int zero=0;
			int g=a*d;
			int e=b*c;
			if (g==0)
			{
				zero=1;
				this->a=0;
			}
			else
			{
				if(abs(g)>=e)
				{
					this->a=g/e;
					g=abs(g-=this->a*e);
					if (g==0)
						zero=1;
				}
				else
					this->a=0;
			}
			if(zero==0)
			{
				this->p=(g/this->nod(abs(g),abs(e)));
				this->q=(e/this->nod(abs(g),abs(e)));
			}
			else
			{
				this->p=0;
				this->q=1;
			}
		}
		
		void PowFrac(int a, int b, int n)
		{
			MultFrac(a,b,a,b);
			for(int i=1;i<n-1;i++)
				MultFrac(this->p,this->q,a,b);	
		}
		
		int RivnFrac(int a, int b, int c, int d)
		{
			int g=b*d;
			int e=a*d;
			int f=c*b;
			if (e==f)
				return 1;
			else
				return 0;
		}

		int CheckFrac(int a, int b, int c, int d)
		{
			int g=b*d;
			int e=a*d;
			int f=c*b;
			if (e==f)
				return 1;
			else
				if(e>f)
					return 2;
				else
					return 3;
		}
		
		int GetP()
		{
			return this->p;
		}
		
		int GetQ()
		{
			return this->q;
		}
		
		int GetA()
		{
			return this->a;
		}		
		
		

	private:
	
		int p,q,a;

		int nod(int x,int y)
		{
			while(x!=y)
			{
				if(x<y) 
					y-=x;
				else  
					x-=y;
			}
			return x;
		}
};
Соседние файлы в папке Дроби
  • #
    30.05.202052.8 Кб1AddUnit.obj
  • #
    30.05.20203.6 Кб1AddUnit.~cpp
  • #
    30.05.202051 б1AddUnit.~ddp
  • #
    30.05.20204.44 Кб1AddUnit.~dfm
  • #
    30.05.20201.65 Кб1AddUnit.~h
  • #
    30.05.20202.79 Кб2CalculateFrac.h
  • #
    30.05.20202.79 Кб1CalculateFrac.~h
  • #
    30.05.20203.16 Кб1CheckUnit.cpp
  • #
    30.05.202051 б1CheckUnit.ddp
  • #
    30.05.20203.33 Кб1CheckUnit.dfm
  • #
    30.05.20201.54 Кб1CheckUnit.h