Exemplo n.º 1
0
//
// divide la frazione f1 per la frazione f2
// 
t_fraction fraction_div(t_fraction f1, t_fraction f2) {
  
    t_fraction f = fraction_create(f1.numerator * f2.denominator, f1.denominator * f2.numerator);
    fraction_reduce(&f);
    return f;
    
}
Exemplo n.º 2
0
//
// crea una frazione da un double
//
t_fraction fraction_fromdouble(double d) {
    
    int num;
    int den;
       
    if(!fraction_isdecimal(d))
    {
        num = (d > INT_MAX) ? INT_MAX : d;
        den = 1;
    }
    else
    {
        int max = 9;
        int m = 1;
       
        while(fraction_isdecimal(d) && max > 0)
        {
            --max;
            m *= 10;
            d = d * 10.0;
        }
    
        num = (d > INT_MAX) ? INT_MAX : d;
        den = m;
        
    }
    
    // crea la frazione
    t_fraction f = fraction_create(num, den);

    // riduce ai minimi termini
    fraction_reduce(&f);
    
    return f;       
};
Exemplo n.º 3
0
struct fraction fraction_div(struct fraction a, struct fraction b)
{
	struct fraction r;
	r.nume = a.nume*b.deno;
	r.deno = a.deno*b.nume;
	fraction_reduce(&r);
	return r;
}
Exemplo n.º 4
0
//
// sottrae le frazioni f1 e f2
//
t_fraction fraction_sub(t_fraction f1, t_fraction f2) {

    assert(f1.denominator != 0);
    assert(f2.denominator != 0);

    int lcm = fraction_lcm(f1.denominator, f2.denominator);    
    int num = (f1.numerator * lcm / f1.denominator) - (f2.numerator * lcm / f2.denominator);   
    
    t_fraction f = fraction_create(num, lcm);
    fraction_reduce(&f);
    return f;
    
}