Được gửi bởi
k2cdtin
các bạn co thể tham khảo bai nay cua mình.no chay đúng đấy:
#include<stdio.h>
#include<conio.h>
unsigned int ucln_2so(unsigned int a, unsigned int b)
{ unsigned int ucln;
ucln=1;
while(a!=b)
if(a>b) a=a-b; else b=b-a;
ucln=a;
return ucln;
}
void main()
{ unsigned int a,b;
clrscr();
printf("KIEM TRA PHAN SO TOI GIAN CHUA?\n");
printf("Ban nhap tu so: "); scanf("%u",&a);
printf("Ban nhap mau so: "); scanf("%u",&b);
if(ucln_2so(a,b)>1)
printf("Phan so chua toi gian. Phan so duoc toi gian thanh: %u/%u ",a/ucln_2so(a,b),b/ucln_2so(a,b));
else printf("Phan so da toi gian");
getch();
}
có gì cho mình ý kiến nhé. mình làm nó chạy đúng rồi. co bạn nào có cách khác tốt hơn ko?
cho tôi góp ý với bạn 1 chút nha bài của bạn chạy chính xác nhưng nó ko thể thao tác trên số âm, cách khắc phục là dùng abs() của math.h . Thứ hai, nếu mẫu số bằng 1 thì ko lẽ in ra a/1 và cuối cùng là in kq ra chính xác bất kể a và b âm hay dương.Đây là code của mình ( dựa theo code của bạn ). Tất nhiên đây ko phải là tối ưu nhất vì nó quá dài.
Code:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int ucln_2so(unsigned int a, unsigned int b)
{
int ucln;
ucln=1;
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
ucln=a;
return ucln;
}
void main()
{
int a,b,r;
printf("KIEM TRA PHAN SO TOI GIAN CHUA?\n");
printf("Ban nhap tu so: "); scanf("%d",&a);
printf("Ban nhap mau so: "); scanf("%d",&b);
r=ucln_2so(abs(a),abs(b));
if(r>1)
{
printf("Phan so chua toi gian.");
if(abs(b)==r)
{
if(a>0 && b<0)
printf("\nPhan so duoc toi gian thanh: -%d ",abs(a)/r);
if(a>0 && b>0)
printf("\nPhan so duoc toi gian thanh: %d ",a/r);
if(a<0 && b<0)
printf("\nPhan so duoc toi gian thanh: %d ",abs(a)/r);
if(a<0 && b>0)
printf("\nPhan so duoc toi gian thanh: -%d ",abs(a)/r);
}
else
{
if(a>0 && b<0)
printf("\nPhan so duoc toi gian thanh: -%d/%d ",abs(a)/r,abs(b)/r);
if(a>0 && b>0)
printf("\nPhan so duoc toi gian thanh: %d/%d ",a/r,b/r);
if(a<0 && b<0)
printf("\nPhan so duoc toi gian thanh: %d/%d ",abs(a)/r,abs(b)/r);
if(a<0 && b>0)
printf("\nPhan so duoc toi gian thanh: -%d/%d ",abs(a)/r,abs(b)/r);
}
}
else
printf("Phan so da toi gian");
getch();
}
lần sau bạn viết code để trong để anh em dễ text hơn.
Bookmarks