# PBinfo #923 – FractiiMax – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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.

## Cod sursă C++

```cpp
#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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/923)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/923/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-923/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
