Rezolvare completă PbInfo #923 FractiiMax

Cerinţa

Se dau 4 numere naturale a b c d, reprezentând fracţiile a/b şi c/d. Determinați și afișați cea mai mare dintre cele două fracții.

Date de intrare

Programul citește de la tastatură numerele a b c d.

Date de ieşire

Programul afișează pe ecran numerele m n, separate prin exact un spațiu, reprezentând numărătorul şi numitorul fracției maxime, adusă la forma ireductibilă.

Restricţii şi precizări

  • 1 ≤ a, b, c, d ≤ 10000

Exemplu

Intrare

7 14 24 18

Ieșire

4 3

Explicație

Fracția maximă este 24/18. Prin simplificare devine 4/3.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema FractiiMax:

#include <iostream>
#include <cmath>
using namespace std;

struct Fractie{
    int numarator, numitor;
};

void Citire(Fractie & P);
void Afisare(Fractie P);
void Simplificare(Fractie & P);
int Cmmdc(int a , int b);
int FCmp(Fractie A , Fractie B);

int main()
{
    Fractie A , B;
    Citire(A), Citire(B);
    if(FCmp(A,B) > 0)
        Afisare(A);
    else
        Afisare(B);
}

int Cmmdc(int a , int b)
{
    if(b == 0)
        return a;
    else
        return Cmmdc(b , a % b);
}

void Citire(Fractie & P)
{
    cin >> P.numarator >> P.numitor;
    Simplificare(P);
}


void Afisare(Fractie P)
{
    cout << P.numarator << " " << P.numitor;
}

void Simplificare(Fractie & P)
{
    int x = Cmmdc(P.numarator, P.numitor);
    P.numarator /= x;
    P.numitor /= x;
}

int FCmp(Fractie A , Fractie B)
{
    // returneaza -1 , 0 sau 1
    if(A.numarator * B.numitor < A.numitor * B.numarator)
        return -1;
    if(A.numarator * B.numitor > A.numitor * B.numarator)
        return 1;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #923 FractiiMax

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #923 FractiiMax de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!