Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Thừa vòng lặp trong C++

20:45 31-03-2022 774 lượt xem 4 bình luận
#include <iostream>
#include <fstream>
using namespace std;
void rutgonphanso(int &x, int &y)
{
    int a,b;
    a=x;
    b=y;
    while ( a != b)
    {
        if (a > b)
            a = a - b;
        else
            b = b - a;
    }
    x=x/a;
    y=y/b;
}
int main()
{
    int a,b;
    fstream input;
    input.open("INPUT.txt",ios::in);
    fstream output;
    output.open("OUTPUT.txt",ios::out);
    while(input.eof()==false)
    {
        input>>a>>b;
        rutgonphanso(a,b);
        output<<a<< " " <<b<<endl;
    }
    return 0;
}

Mình có đoạn code rút gọn phân số được nhập từ file như thế này.

Nhưng khi mình chạy thì trong file output luôn bị thừa ra 1 cặp tử,mẫu

VD: input: 6 8 và 3 9 thì output sẽ hiện ra 3 cặp tử,mẫu: 3 4; 1 3; 1 3

Cặp tử mẫu cuối cùng luôn luôn bị thừa ra như thế ạ

Thì như thế là mình sai ở đâu ạ. Mong mọi người giúp đỡ !

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
chochet đã bình luận 10:16 01-04-2022
Bạn có thể sử dụng thuật toán Tính ước chung lớn nhất của a và b nhanh. Bạn include rồi sử dụng hàm __gcd(x, y) là được.
Vo Tan Duc đã bình luận 09:48 01-04-2022
Đâu bạn debug thử xem

Câu hỏi mới nhất