Kod:
//Ondalıklı sayıyı kesre dönüştürme
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int obeb(int,int);
int main()
{
int a,b,t;double us,c;
printf("Bir ondalikli sayi giriniz\n");
scanf("%lf",&c);
//tam kısımda 3 basamak için
if(c>100&&c<1000)
{
us=pow(10,5);
a=c*us;b=us;
}
//tam kısımda 2 basamak için
else if(c>1)
{
us=pow(10,7);
a=c*us;b=us;
}
//0 ile 1 aralığındaki ondalıklı sayılar için
else{
us=pow(10,9);
a=c*us;b=us;
}
if(a%10==9)
a++;/*Bazı ondalıklı sayıları çevirirken sonu 9 devrediyor şeklinde çevirdiği için
bu ifadeyi ekledik.Mesela bu ifade olmadığı durumda 0.12 ifadesini 119999999/100000000
şeklinde çeviriyor.*/
t=obeb(a,b);
printf("%f=%d/%d\n\n",c,a/t,b/t);
system("pause");
return 0;
}
int obeb(int a,int b)
{
int obeb=1,i=2;
while(!(a==1||b==1))
{
while(a%i==0||b%i==0)
{
if(a%i==0&&b%i==0)
{
a/=i;
b/=i;
obeb*=i;
}
else if(a%i==0)
a/=i;
else if(b%i==0)
b/=i;
}//ikinci while ın sonu
(i%2)?i+=2:i++;/*i%2 değeri 1 olduğunda i nin 2 artması
i%2 değeri 0 olduğunda i nin 1 artması için*/
}//birinci while ın sonu
return obeb;
}