Cảm ơn ạ. Còn cái hàm cuối rút gọn phân số e viết thế này ạ, có lấy giá trị return từ hàm tinh ở dưới lun ạ. Nhưng bị lỗi, a xem giúp e với ạ,
Đây là toàn bộ code của e ạ !
Code:
#include <stdio.h>
struct Phanso
{
int ituso;
int imauso;
};
void nhapxuat(Phanso &p, Phanso &q)
{
printf("Nhap vao tu so phan so thu I:\n ");
scanf("%d",&p.ituso);
printf("Nhap vao mau so phan so thu I: \n");
scanf("%d",&p.imauso);
printf("Nhap vao tu so phan so thu II:\n");
scanf("%d",&q.ituso);
printf("Nhap vao mau so phan so thu II :\n");
scanf("%d",&q.imauso);
printf("Phan so thu I la : %d/%d\n",p.ituso,p.imauso);
printf("Phan so thu II la : %d/%d\n",q.ituso,q.imauso);
}
int tinh(Phanso &p, Phanso &q)
{
char pheptinh;
int tuso,mauso;
mauso=q.imauso*p.imauso;
printf("Nhap vao phep tinh ma ban muon thuc hien(+,-,*,/) :\n");
scanf(" %c", &pheptinh);
switch(pheptinh)
{
case'+':
tuso=q.ituso*p.imauso+q.imauso*p.ituso;
printf("Ket qua + : %d/%d \n",tuso,mauso);
break;
case'-':
tuso=q.ituso*p.imauso-q.imauso*p.ituso;
printf("Ket qua - : %d/%d \n",tuso,mauso);
break;
case'*':
tuso=q.ituso*p.ituso;
printf("Ket qua * : %d/%d \n",tuso,mauso);
break;
case'/':
tuso=q.imauso*p.ituso;
printf("Ket qua / : %d/%d \n",tuso,p.imauso*q.ituso);
break;
}
return tuso;
}
void rutgon(Phanso &p, Phanso &q)
{
int a,b,mauso;
mauso=q.imauso*p.imauso;
a=tinh(p,q);
b=mauso;
while(a!=b)
{
if(a>b)
a=a-b;
else
a=b-a;
}
printf("Phan so khi da rut gon: %d/%d ",a);
}
int sosanh( Phanso &q, Phanso &p)
{
int a,b;
a=q.ituso*p.imauso-q.imauso*p.ituso;
if(a>0)
return 1;
else if(a<0)
return -1;
else
return 0;
}
void main()
{
int tuso, mauso;
Phanso p; Phanso q;
nhapxuat(p,q);
tinh(p,q);
rutgon(p,q);
sosanh(q,p);
}