Code ước số chung lớn nhất bị đứng

Hic… 1 rưỡi sáng rồi mà vẫn chưa hoàn thiện bài code. Dưới đây là bài code tìm ucln và bcnn của 2 số. Sao mình vừa code xong thì nó chạy bình thường bỗng nhiên chạy lại thì nhập 2 số xong nó đứng, enter mãi không chịu ra kết quả là sao nhỉ ace? @@

#include <stdio.h>
int USCLN(int a, int b) 
{
	while (a != b)
	{
		if (a > b)
			a -= b;
		else 
			b += a;
	}  
} 	
int BSCNN (int a, int b) 
{
    return (a * b) / USCLN (a, b);
}
int main () 
{
	int a, b;
    printf ("Nhap so nguyen duong thu nhat: ");
    scanf ("%d", &a);
    printf ("Nhap so nguyen duong thu hai: ");
    scanf ("%d", &b);
    printf ("USCLN cua %d va %d la: %d\n", a, b, USCLN (a, b));
    printf ("BSCLN cua %d va %d la: %d", a, b, BSCNN (a, b));
}

Mong được trợ giúp đầu ngày :((

Đề nghị bạn post code dưới dạng chữ, không chụp hình.

1 Like

Chương trình chạy mãi không dừng thường là do lặp vô hạn. Kiểm tra lại vòng lặp bằng debugging tool.
Nếu bạn chưa dùng bao giờ thì đây là hướng dẫn cơ bản:

  1. Bạn muốn tạm dừng chương trình tại dòng code nào thì chọn dòng code đó bằng việc click vào thanh phía bên trái dòng code, gần số thứ tự của dòng. Một chấm đỏ sẽ hiện lên.
  2. Nhấn F8 để chạy chương trình với debug mode. Chương trình sẽ tạm dừng tại dòng code đó. Điểm tạm dừng này gọi là breakpoint. Bạn có thể kiểm tra giá trị của các biến tại breakpoint.
  3. Nhấn F7 để tiếp tục chạy đến breakpoint tiếp theo.
  4. Lặp lại nhiều lần để kiểm tra xem điều kiện dừng vòng lặp có được thỏa mãn hay không.

Trong trường hợp này của bạn thì là do cách tính UCLN chưa đúng dẫn tới việc lặp vô hạn với một vài giá trị cụ thể của a, b.
Chi tiết về debugging xem thêm tại How do I debug using Dev-C++ (cuny.edu)

3 Likes

Bạn thử chạy tay với input (a, b) = (a_0, 0),\ a_0 \neq 0.

Thực ra code bạn sai từ đầu vì chỗ đó là -= chứ ko phải +=.

4 Likes

Mà Visual Studio giờ free rồi sao trường học vẫn dùng Dev C++ nhỉ.

3 Likes

Được rồi :v tkss nhá brr

Nó thành con app truyền thống của trường tôi rồi ông à :v

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