void reduce(int* m, int* n) { int a,b,c; a=*m; b=*n; // НОД a b - алгоритм Евклида do { c=a%b; a=b; b=c; } while (b>0); *m/=a; *n/=a; }
int main() { int m,n; cout<<"input m n "; cin>>m>>n; cout<<m<<"/"<<n<<" = "; reduce(&m,&n); if (n>1) cout<<m<<"/"<<n<<endl; else cout<<m<<endl; system("pause"); return 0; }
using namespace std;
void reduce(int* m, int* n) {
int a,b,c;
a=*m; b=*n;
// НОД a b - алгоритм Евклида
do {
c=a%b; a=b; b=c; }
while (b>0);
*m/=a; *n/=a;
}
int main() {
int m,n;
cout<<"input m n "; cin>>m>>n;
cout<<m<<"/"<<n<<" = ";
reduce(&m,&n);
if (n>1) cout<<m<<"/"<<n<<endl;
else cout<<m<<endl;
system("pause");
return 0;
}
input m n 25 15
25/15 = 5/3
function gcd(a,b:integer):integer;
// Нахождение НОД
begin
while b<>0 do
begin
a:=a mod b;
var i:=b; b:=a; a:=i
end;
Result:=a
end;
procedure Shorter(var a,b:integer);
// "сокращатель" дроби
begin
var k:=gcd(a,b);
a:=a div k;
b:=b div k
end;
begin
var a,b:integer;
Writeln('Введите числитель и знаменатель дроби: ');
Read(a,b);
Write(a,'/',b,'='); Shorter(a,b); Writeln(a,'/',b)
end.
Тестовое решение:
Введите числитель и знаменатель дроби:
25 15
25/15=5/3