﻿/*
    Racionális számok rendezése
*/
#include <iostream>
using namespace std;


struct Rac
{
    int szamlalo;
    int nevezo;
};


void kiir(Rac r)
{
    cout << r.szamlalo << " / " << r.nevezo << endl;
}


//kisebb(r1,r2) == true  <=>  r1 < r2
bool kisebb(Rac r1, Rac r2)
{
    return r1.szamlalo * r2.nevezo < r1.nevezo * r2.szamlalo;
}


void rendez_nov(int n, Rac t[])     // t[0] ... t[n-1]
{
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            if (kisebb(t[j], t[i])) {
                Rac temp = t[i]; // az egész struktúrát másolja
                t[i] = t[j];
                t[j] = temp;
            }
        }
    }
}


int main()
{
    Rac r { 3, 5 };

    int n = 3;
    Rac t[3] = { r, {1,2},  {0,1} };
    //               Rac     Rac

    rendez_nov(n, t);

    for (int i = 0; i < n; i++)
        kiir(t[i]);

    return 0;
}

/* Feladat:

    Beolvasunk egy n-t és n darab racionális számot "számláló nevező" 
    alakban (n <= 100).

    Írjuk ki az irreducibilis alakjukat növekvő sorrendben "számláló / nevező"
    alakban.
*/
