Các anh giúp em giải bài c này nhé:
Nhập vào 2 phân số. Tính phân số tối giản của phép tính cộng ,trừ,nhân,chia 2 phân số. em bị sai cái hàm tối giản phân số nên phép trừ tính ra bị sai.Xin các anh sửa hộ,đây là bài của em làm.
Code:
#include <stdio.h>
#include <conio.h>
typedef struct
{
int tu;
int mau;
}ps;
void xuat(ps x,ps y);
void nhap(ps &x,ps &y);
ps congps(ps x,ps y);
ps trups(ps x,ps y);
ps nhanps(ps x,ps y);
ps tgps(ps x);
void main()
{
clrscr();
ps x,y;
nhap(x,y);
xuat(x,y);
printf ("\n tgps cong: %d/%d + %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(congps(x,y)));
printf ("\n tgps tru: %d/%d - %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(trups(x,y)));
printf ("\n tgps nhan: %d/%d * %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(nhanps(x,y)));
getch();
}
void nhap(ps &x,ps &y)
{
printf ("\n nhap tuva mau ps1: ");
scanf ("%d%d",&x.tu,&x.mau);
printf ("\n nhap tu va mau ps2: ");
scanf ("%d%d",&y.tu,&y.mau);
}
void xuat(ps x,ps y)
{
printf ("\n ps1= %d/%d",x.tu,x.mau);
printf ("\n ps2= %d/%d",y.tu,y.mau);
}
ps congps(ps x,ps y)
{
ps kq;
kq.tu=x.tu*y.mau+y.tu*x.mau;
kq.mau=x.mau*y.mau;
return kq;
}
ps trups(ps x,ps y)
{
ps kq;
kq.tu=x.tu*y.mau-y.tu*x.mau;
kq.mau=x.mau*y.mau;
return kq;
}
ps nhanps(ps x,ps y)
{
ps kq;
kq.tu=x.tu*y.tu;
kq.mau=x.mau*y.mau;
return kq;
}
ps tgps(ps x)
{
ps y;
y=x;
while (x.tu!=x.mau)
{
if(x.tu>x.mau)
x.tu = x.tu-x.mau;
else
x.mau= x.mau-x.tu;
}
y.tu=y.tu/x.tu;
y.mau=y.mau/x.tu;
return y;
}