[ create a new paste ] login | about

Link: http://codepad.org/7yx5dzK9    [ raw code | output | fork ]

salvador@conclase.net - C++, pasted on Oct 20:
// Suma de fracciones
// Agosto de 2009 Con Clase, Salvador Pozo
#include <iostream>
using namespace std;

struct fraccion {
    int num;
    int den;
};

fraccion Simplificar(fraccion);
fraccion Sumar(fraccion, fraccion);
int MCD(int, int);

int main() {
    fraccion f, g, s;

    f.num=10;
    f.den=3;
    g.num=5;
    g.den=6;
    s = Sumar(f, g);
    cout << "Sumar(" << f.num << "/" << f.den << "," << g.num << "/" << g.den << ") = "; 
    cout << s.num << "/" << s.den << endl;

    return 0;
}

fraccion Simplificar(fraccion f) {
    int mcd = MCD(f.num,f.den);
    f.num /= mcd;
    f.den /= mcd;
    return f;
}

int MCD(int n1, int n2) {
    // Buscar los factores primos que dividen tanto a n1 como a n2
    int resultado = 1; // El 1 siempre es un CD
    int factor = 2;    // Empezamos en 2

    while(factor <= n1 || factor <= n2) {
        while(!(n1 % factor) && !(n2 % factor)) {
            resultado *= factor;
            n1 /= factor;
            n2 /= factor;
        }
        if(factor == 2) factor++;  // Si factor es 2, el siguiente primo es 3
        else factor+=2;            // Si no, elegimos el siguiente nĂºmero impar
    }
    return resultado;
}

fraccion Sumar(fraccion f1, fraccion f2) {
    fraccion resultado;

    resultado.num = f1.num*f2.den+f1.den*f2.num;
    resultado.den = f1.den*f2.den;
    return Simplificar(resultado);
}


Output:
1
Sumar(10/3,5/6) = 25/6


Create a new paste based on this one


Comments: