Chương trình tính tổng 2 phân số không chạy được (the program has stopped working)

#include<stdio.h>
main()
{
	int t1,t2,m1,m2,t,m,tu,mau,S;
	scanf("%d",&t1);
	scanf("%d",&m1);
	scanf("%d",&t2);
	scanf("%d",&m2);
	t=t1*m2+t2*m1;
	tu=t;
	m=m1*m2;
	mau=m;
	while(mau>0)
	{
		tu=tu%mau;
		S=tu;
		tu=mau;
		mau=S;
	}
	t=t/tu;
	m=m/mau;
	printf("%d/%d",t,m);
}

Ae cho mình hỏi code sai chỗ nào mà chạy nó cứ bị vầy :


Ae đọc cái này cho dễ nhìn:

đường link của bạn có khoảng trắng nên file ko chạy được

5 Likes

Ông có thể nói rõ hơn xíu không ông?

mấy cái code kia cũng lưu cùng folder vẫn chạy được mà ông?

Giả sử t= tu=3, m= mau=1:
tu = tu \mod mau = 3 \mod 1 = 0
Hoán vị tu và mau: tu = 1, mau = 0
mau = 0 nên thoát vòng lặp
t = \frac{t}{tu} = \frac{3}{1} = 3
m = \frac{m}{mau} = \frac{1}{0}

Trong C, chia cho 0 là unexpected behaviour. Khi chương trình được biên dịch bằng gcc thì chia cho 0 sẽ gây crash chương trình

P/s 2: Hình như đoạn này là giải thuật Euclid không dùng đệ quy, thay

m=m/mau;

thành

m=m/tu;

là được

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?