Bài 082 - Cộng Trừ Nhân Chia Phân số trong Lập trình C


Video giải thích chi tiết về Cộng Trừ Nhân Chia Phân số trong Lập trình C trong lập trình C | Tự học lập trình C



Code ví dụ


#include "stdio.h"
#include "math.h"
struct PhanSo{
	int tuSo;
	int mauSo;
};


void rutGon(PhanSo *ps){
	// Tim USCLN
	int a = ps->tuSo;
	int b = ps->mauSo;

	a = abs(a);
	b = abs(b);
	
	int USCLN =1;
	// TH1
	if(a==0 || b==0){
		USCLN = (a+b);
	}else{
	//TH2
		while(a!=b){
			if(a>b){
				a = a-b;
			}else{
				b = b-a;
			}
		}
		USCLN = a;	
	}
	ps->tuSo/=USCLN;
	ps->mauSo/=USCLN;
}

void nhapPhanSo(PhanSo *ps){
	printf("\nNhap vao tu so: ");
	scanf("%d", &ps->tuSo);
	do{
		printf("\nNhap vao mau so: ");
		scanf("%d", &ps->mauSo);
	}while(ps->mauSo==0);
}

void inPhanSo(PhanSo ps){
	if(ps.mauSo<0){
		ps.tuSo*=-1;
		ps.mauSo*=-1;
	}
	rutGon(&ps);
	if(ps.mauSo==1){
		printf("%d", ps.tuSo);
	}else{
		printf("%d/%d", ps.tuSo, ps.mauSo);
	}

}

PhanSo congHaiPhanSo(PhanSo ps1, PhanSo ps2){
	PhanSo ketQua;
	// a/b + c/d => (a*d + c*b)/(b*d)
	ketQua.tuSo = ps1.tuSo*ps2.mauSo + ps2.tuSo*ps1.mauSo;
	ketQua.mauSo = ps1.mauSo*ps2.mauSo;
	return ketQua;
}

PhanSo truHaiPhanSo(PhanSo ps1, PhanSo ps2){
	PhanSo ketQua;
	// a/b + c/d => (a*d - c*b)/(b*d)
	ketQua.tuSo = ps1.tuSo*ps2.mauSo - ps2.tuSo*ps1.mauSo;
	ketQua.mauSo = ps1.mauSo*ps2.mauSo;
	return ketQua;
}

PhanSo nhanHaiPhanSo(PhanSo ps1, PhanSo ps2){
	PhanSo ketQua;
	// a/b + c/d => (a*c)/(b*d)
	ketQua.tuSo = ps1.tuSo*ps2.tuSo;
	ketQua.mauSo = ps1.mauSo*ps2.mauSo;
	return ketQua;
}

PhanSo chiaHaiPhanSo(PhanSo ps1, PhanSo ps2){
	PhanSo ketQua;
	// a/b + c/d => (a*d)/(b*c)
	ketQua.tuSo = ps1.tuSo*ps2.mauSo;
	ketQua.mauSo = ps1.mauSo*ps2.tuSo;
	return ketQua;
}

int main(){
	PhanSo ps1, ps2;
	printf("\nPhan so thu nhat: ");
	nhapPhanSo(&ps1);
	printf("\nPhan so thu hai: ");
	nhapPhanSo(&ps2);
	printf("\nPhan so vua nhap la: ");
	inPhanSo(ps1);
	printf("\t");
	inPhanSo(ps2);
	printf("\nCong phep tinh: \n");
	inPhanSo(ps1); printf("+"); inPhanSo(ps2); printf("="); inPhanSo(congHaiPhanSo(ps1, ps2));	
	printf("\n");
	inPhanSo(ps1); printf("-"); inPhanSo(ps2); printf("="); inPhanSo(truHaiPhanSo(ps1, ps2));
	printf("\n");	
	inPhanSo(ps1); printf("*"); inPhanSo(ps2); printf("="); inPhanSo(nhanHaiPhanSo(ps1, ps2));	
	printf("\n");
	inPhanSo(ps1); printf(":"); inPhanSo(ps2); printf("="); inPhanSo(chiaHaiPhanSo(ps1, ps2));	
}



    

Bạn có thể thích những bài đăng này:

2 nhận xét:

  1. chạy trên file.c không được , lỗi unknown type name ạ

    Trả lờiXóa
  2. Anh chạy trên cpp thì chạy dc
    Còn em chạy trên c thì lỗi không chạy dc

    Trả lờiXóa