[C] Hỗn số
Tác giả:
- Trần Hán Huy – tranhanhuy.wordpress.com
Sách:
- Bài tập kĩ thuật lập trình C/C++ – Nguyễn Tấn Trần Minh Khang
Đề bài
- Hỗn số
523 Nhập hỗn số
524 Xuất hỗn số
525 Rút gọn hỗn số
526 Tính tổng 2 hỗn số
527 Tính hiệu 2 hỗn số
528 Tính tích 2 hỗn số
529 Tính thương 2 hỗn số
530 Kiểm tra hỗn số tối giản
531 Qui đồng 2 hỗn số
Code
/*Nick yahoo: conloyal*/ /*Soft: Visual studio 2008*/ #include <stdio.h> //522 Khai báo dữ liệu để biểu diễn thông tin của một hỗn số struct HonSo { int iNguyen; int iTu; int iMau; }; //523 Nhập hỗn số void Nhap(HonSo &a) { printf("\nNhap phan nguyen: "); scanf_s("%d",&a.iNguyen); printf("\nNhap tu so: "); scanf_s("%d",&a.iTu); printf("\nNhap mau so: "); scanf_s("%d",&a.iMau); } //524 Xuất hỗn số void Xuat(HonSo a) { printf("%d %d/%d", a.iNguyen, a.iTu, a.iMau); } //525 Rút gọn hỗn số int UocChungLonNhat(int a, int b) { while (a!=b) { if (a>b) a-=b; else b-=a; } return a; } HonSo RutGonHonSo(HonSo a) { if (a.iTu > a.iMau) { int tam = a.iTu / a.iMau; a.iNguyen += tam; a.iTu -= a.iMau * tam; } int UCLN = UocChungLonNhat(a.iTu, a.iMau); a.iTu /= UCLN; a.iMau /= UCLN; return a; } //526 Tính tổng 2 hỗn số HonSo TinhTong(HonSo a, HonSo b) { HonSo c; c.iNguyen = a.iNguyen + b.iNguyen; c.iTu = a.iTu * b.iMau + a.iMau * b.iTu; c.iMau = a.iMau * b.iMau; return c; } //527 Tính hiệu 2 hỗn số HonSo TinhHieu(HonSo a, HonSo b) { HonSo c; c.iNguyen = a.iNguyen - b.iNguyen; c.iTu = a.iTu * b.iMau - a.iMau * b.iTu; c.iMau = a.iMau * b.iMau; return c; } //528 Tính tích 2 hỗn số HonSo TinhTich(HonSo a, HonSo b) { a.iTu = a.iTu + a.iNguyen*a.iMau; b.iTu = b.iTu + b.iNguyen*b.iMau; HonSo c; c.iNguyen = 0; c.iTu = a.iTu * b.iTu; c.iMau = a.iMau * b.iMau; c = RutGonHonSo(c); return c; } //529 Tính thương 2 hỗn số HonSo TinhThuong(HonSo a, HonSo b) { a.iTu = a.iTu + a.iNguyen*a.iMau; b.iTu = b.iTu + b.iNguyen*b.iMau; HonSo c; c.iNguyen = 0; c.iTu = a.iTu * b.iMau; c.iMau = a.iMau * b.iTu; c = RutGonHonSo(c); return c; } //530 Kiểm tra hỗn số tối giản bool KtraHonSoToiGian(HonSo a) { int UCLN = UocChungLonNhat(a.iTu, a.iMau); if (UCLN == 1) return true; return false; } //531 Qui đồng 2 hỗn số void QuiDong2HonSo(HonSo &a, HonSo &b) { HonSo c = a; a.iTu = a.iTu * b.iMau; a.iMau = a.iMau * b.iMau; b.iTu = b.iTu * c.iMau; b.iMau = c.iMau * b.iMau; } void main() { HonSo a,b,c; Nhap(a); Nhap(b); printf ("\nHon so a: "); Xuat(a); printf ("\nHon so b: "); Xuat(b); a = RutGonHonSo(a); printf("\na sau khi rut gon: "); Xuat(a); printf("\nTong 2 hon so: "); Xuat(TinhTong(a,b)); printf("\nHieu 2 hon so: "); Xuat(TinhHieu(a,b)); printf("\nTich 2 hon so: "); Xuat(TinhTich(a,b)); printf("\nThuong 2 hon so: "); Xuat(TinhThuong(a,b)); if (KtraHonSoToiGian(a)) printf("\nHon so a toi gian"); else printf("\nHon so a chua toi gian"); QuiDong2HonSo(a,b); printf("\na sau khi qui dong: "); Xuat(a); printf("\nb sau khi qui dong: "); Xuat(b); }
Link source:
Thank ban…Ban lam rat hay.