Victor Surozhtsev
Просветленный
(34297)
4 года назад
Так надо сначала найти GCD чисел a и b, то есть их наибольший общий делитель. Потом выдать a/b, а также a и b, каждое из которых поделенó на GCD (Great Common Divisor). Но если b=GCD(a,b), то надо вывести только a/b. Тут можно воспользоваться рекурсивной функцией, ищущей GCD по алгоритму Евклида:
#include "iostream"
using namespace std;
int gcd (int x, int y) { int z=x%y; if (z==0) return y; else return gcd(y,z); }
int main() { int a,b,c; for(;;) { cout << "a b > "; cin << a << b; c=gcd(a,b); cout << a/b << '\n'; if (b!=c) cout << a/c << ' / ' << b/c << '\n'; } }
А если надо вывести целую часть дроби после её доведéния до несократимости плюс к этому ещё и остаток, получающийся после вычитания из дроби её целой части, то так бы и писáли!..
using namespace std;
int main() {
int a,b,c,i,f,x,y;
cin>>a>>b;//if(a>b){f=a;}else{f=b;}
// for(i=1;i<=f;i++)
// {if(a%i==0 && b%i==0){c=i;}}
x=a/b;if(x==0){}else if(b*x==a){cout<<x<<" ";}else {cout<<x<<" "<<x<<"/"<<b;}
return 0;
}