30/09/2018, 20:09

Tìm dang tối giản của phân số

Mọi người tìm giúp em chỗ sai với ạ!!

  int a,b,a1,b1,U;
    do
    {
        printf("Nhap vao a1= ");
        scanf("%d",&a1);
        printf("
Nhap vao b1= ");
        scanf("%d",&b1);
        if (b1==0)
        {
            printf("
Gia tri cua b khong hop ly, xin kta lai!");
        }
    }while (b1==0);
    a1=a;
    b1=b;
    if(a==0)
    {
        printf("
 ket qua la 0");
    }
    else
    {
        while (a!=b)
    {
        if(a>b)
        {
            a=a-b;
        }
        else if(b>a)
        {
            b=b-a;
        }
    }
            U=a;

    }
    printf("
 Phan so toi gian la %d/%d",a1/U,b1/U);
    getch ();
    return 0;
}
Gió viết 22:13 ngày 30/09/2018
if (a>b) a-=b;
ThuThao viết 22:16 ngày 30/09/2018

oh em viết nhầm nhưng vẫn chưa ra ạ…

Sáng Béo viết 22:12 ngày 30/09/2018
a1=a;
b1=b;

chỗ này ngược rồi. phải là

a = a1;
b = b1;
ThuThao viết 22:22 ngày 30/09/2018

oaa
ơ thế nó khác nhau ạ?

Sáng Béo viết 22:25 ngày 30/09/2018

oaaơ thế nó khác nhau ạ?

khác nhau chứ.
lệnh trên sẽ lấy giá trị ở vế phải gán cho biến ở vế trái.

Ngô Doãn Tuấn viết 22:11 ngày 30/09/2018

Khi vấn đề được giải quyết bạn thử tạo update nó xem sao
Tạo một hàm để xử lý bài toán,Biết đâu nhìn code nó sẽ đỡ rối hơn đó
Bạn có thể tạo một hàm tìm UCLN của 2 số chẳng hạn

ThuThao viết 22:13 ngày 30/09/2018

hàm ạ? em mới học đến vòng lặp thôi cũng tạo hàm dc ạ?
làm ntn ạ?

sonhai viết 22:22 ngày 30/09/2018

mk nghĩ cái này đơn giản hơn

#include<conio.h>

int main()
{
	int a,b,i;
	printf("nhap tu so a=");
	scanf("%d",&a);
	printf("\n nhap mau so b=");
	scanf("%d",&b);
	if(b==0) printf("\n phan so khong ton tai");
	for(i=(int)(a/2);i>1;i--)
	{
		if(a%i==0 && b%i==0)
		{
		printf("\n phan so toi gian la %d/%d",a/i,b/i);
		break;}
	}
	getch();
}
ThuThao viết 22:18 ngày 30/09/2018

Cách của a ngắn hơn thật

Bài liên quan
0