Code phân số không rút gọn được

Xem giùm em đoạn code này không biết sai chỗ nào mà em rút gọn phân số không được .Cảm ơn ạ

#include <iostream>
using namespace std ;
struct Phanso{
	int tu ;
	int mau;
};
struct Node{
	Phanso *data;
	Node *pNext ;
};
struct SingleList{
	Node *pHead ;
	Node *pTail ;
};
void Init(SingleList *&list)
{
	list->pHead=list->pTail=NULL;
}
Node *CreateNode(Phanso *ps)
{
	Node *pNode = new Node ;
	if(pNode!=NULL)
	{
		pNode->data=ps ;
		pNode->pNext=NULL ;
	}
	else
	{
		cout<<"Cap phat bo nho that bai\n";
		return NULL ;
	}
	return pNode ;
}
void InserLast(SingleList *&list,Phanso *ps)
{
	Node *pNode = CreateNode(ps) ;
	if(list->pHead==NULL)
	{
		list->pHead=list->pTail=pNode ;
	}
	else
	{
		list->pTail->pNext=pNode ;
		list->pTail=pNode ;
	}
}
void PrintList(SingleList *list)
{
	if(list->pHead==NULL)
	{
		cout<<"Danh sach lien ket rong\n";
		return ;
	}
	else
	{
		Node *pTmp = list->pHead ;
		while(pTmp!=NULL)
		{
			cout<<pTmp->data->tu<<"/"<<pTmp->data->mau<<"\t";
			pTmp=pTmp->pNext;
		}
	}
}
int UCLN(Phanso *ps) {
    int tmp;
    while(ps->mau != 0) {
        tmp = ps->tu % ps->mau ;
        ps->tu = ps->mau ;
        ps->mau = tmp;
    }
    return ps->tu;
void RutGon(Phanso *&ps)
{
	ps->tu=ps->tu/UCLN(ps) ;
	ps->mau=ps->mau/UCLN(ps) ;
}
void NhapPhanSo(Phanso *&ps)
{
	cout<<"Tu=";
	cin>>ps->tu ;
	cout<<"Mau=";
	cin>>ps->mau;
}
int main()
{
	SingleList *list = new SingleList ;
	Init(list) ;
	Phanso *ps = new Phanso ;
	NhapPhanSo(ps) ;
	cout<<UCLN(ps)<<endl ;
	RutGon(ps) ;
	cout<<ps->tu<<"\t"<<ps->mau<<endl;
	
}

Bạn chỉ sai 1 chỗ là:
Thay đổi trực tiếp giá trị (tử và mẫu) của phân số trong các hàm tìm UCLN()RutGon().

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