9.
.
.
(. ratio , , ) , m / n, m, n .
, . , (-1, 1). , , . .
. .
, : , , , . .
1.
, :
( );
;
;
.
. (1 , -1 ), :
// " "
class Fraction
{
int sign; // (+ -)
int intPart; //
int numerator; //
int denominator; //
...
}
, Fraction . , , , . , . , , . , , . , .
// " "
class Fraction
{
int sign; // (+ -)
int intPart; //
int numerator; //
int denominator; //
//
void GetMixedView()
{
...
}
//
void Cancellation()
{
...
}
//
|
|
void GetIntPart()
{
...
}
...
}
Fraction , , , , , . .
, Fraction :
2.
, :
;
;
;
.
:
//
public Fraction(int n, int d, int i = 0, int s = 1)
, , . (). , , .
//
Fraction::Fraction(int n, int d, int i, int s)
{
intPart = i;
numerator = n;
denominator = d;
sign = s;
GetMixedView();
}
, . . GetMixedView().
, , . :
//
Fraction::Fraction()
{
intPart = 0;
numerator = 0;
denominator = 1;
sign = 1;
}
. , , , .
//
void Fraction:: GetMixedView()
{
GetIntPart(); //
Cancellation(); //
}
, :
//
void Fraction:: GetIntPart()
{
if(numerator >= denominator)
{
intPart += (numerator / denominator);
numerator %= denominator;
}
}
, .
//
void Fraction:: Cancellation()
{
if(numerator!= 0)
{
int m = denominator,
n = numerator,
ost = m%n;
// (, )
//
while(ost!= 0)
{
m = n;
n = ost;
ost = m % n;
}
int nod = n;
if(nod!= 1)
{
numerator /= nod;
denominator /= nod;
}
}
}
, Fraction.
|
|
//
Fraction:: ~Fraction()
{
Cout<<" " << (*this) << " ."<<endl;
}
Main() Fraction .
void Main(void)
{
// 2/3
Fraction d1 (2, 3, 0, 1);
// -2 4/5
Fraction d2 (4, 5, 2, -1);
// 2 1/3
Fraction d3 (4, 3, 1, 1);
// 1 2/3
Fraction d4 (10, 6);
// 3/7
Fraction d5 (3, 7);
// 2 3/8
Fraction d6 (3, 8, 2);
// 0
Fraction d7;
...
}
1. , , .
2. .
3. , .
:
1. . , , , .
2. . , , , .
3. . , , , , .
4. . , , , .
5. . , ( *), , ( ), - .
6. . , ( ), , ( ), - .
7. . , ( ), , ( ), - .
8. . , ( ), , ( ), - .
9. . , ( : ), ( ), , - .
10. . , , , .
4.
|
|
1. ,
2. , , .
3. .