Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не пойму условие задачи, немного. Решил вроде работает, но решение не принимают, что не так?

юрий келембет Знаток (268), закрыт 4 года назад
#include
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;
}
Дополнен 4 года назад
Лучший ответ
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'; } }

А если надо вывести целую часть дроби после её доведéния до несократимости плюс к этому ещё и остаток, получающийся после вычитания из дроби её целой части, то так бы и писáли!..
Остальные ответы
クマのプーさん Мудрец (15499) 4 года назад
ну протестируй чтоль
ввод: 10 и 6
ожидаемый вывод 1 2/3
у тебя разве что-то похожее?
юрий келембетЗнаток (268) 4 года назад
У меня 1 1/6
юрий келембетЗнаток (268) 4 года назад
Буду думать спасибо)
Похожие вопросы