[C] Phâ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
- Phân số
506 rút gọn phân số
507 Tính tổng 2 phân số
508 Tính hiệu 2 phân số
509 Tính tích 2 phân số
510 Tính thương 2 phân số
511 Kiểm tra phân số tối giản
512 Qui đồng phân số
513 Kiểm tra phâ số dương
514 Kiểm tra phâ số âm
515 So sánh 2 phân số: hàm trả về 1 trong 3 giá trị: 0,-1,1
516 Định nghĩa toán tử operator + cho 2 phân số
517 Định nghĩa toán tử operator – cho 2 phân số
518 Định nghĩa toán tử operator * cho 2 phân số
519 Định nghĩa toán tử operator / cho 2 phân số
520 Định nghĩa toán tử operator ++ cho 2 phân số
521 Định nghĩa toán tử operator — cho 2 phân số
Code
#include <stdio.h> #include <conio.h> struct PhanSo { float fTuSo; float fMauSo; }; void NhapPhanSo(PhanSo &a) { printf("Nhap Tu so: "); scanf_s("%f", a.fTuSo); printf("Nhap Mau so: "); scanf_s("%f", a.fMauSo); } void XuatPhanSo(PhanSo a) { printf("%.2f / %.2f", a.fTuSo, a.fMauSo); } //506 rút gọn phân số float UocSoChungLonNhat(float x, float y) { while (x!=y) { if (x>y) x -= y; else y -=x; } return x; } PhanSo RutGonPhanSo(PhanSo a) { float UCLN = UocSoChungLonNhat (a.fTuSo, a.fMauSo); a.fTuSo = a.fTuSo/UCLN; a.fMauSo = a.fMauSo/UCLN; return a; } //507 Tính tổng 2 phân số PhanSo TinhTong2PhanSo(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo + a.fMauSo * b.fTuSo; kq.fMauSo = a.fMauSo * b.fMauSo; return kq; } //508 Tính hiệu 2 phân số PhanSo TinhHieu2PhanSo(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo - a.fMauSo * b.fTuSo; kq.fMauSo = a.fMauSo + b.fMauSo; return kq; } //509 Tính tích 2 phân số PhanSo TinhTich2PhanSo(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fTuSo; kq.fMauSo = a.fMauSo * b.fMauSo; return kq; } //510 Tính thương 2 phân số PhanSo TinhThuong2PhanSo(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo; kq.fMauSo = a.fMauSo * b.fTuSo; return kq; } //511 Kiểm tra phân số tối giản bool KiemTraPhanSoToiGian(PhanSo a) { PhanSo c = RutGonPhanSo(a); if (c.fTuSo == a.fTuSo && c.fMauSo == a.fMauSo) return true; return false; } //512 Qui đồng phân số void QuiDong2PhanSo(PhanSo &a, PhanSo &b) { PhanSo c; c.fTuSo = a.fTuSo; c.fMauSo = a.fMauSo; a.fTuSo *= b.fMauSo; a.fMauSo *= b.fMauSo; b.fTuSo *= c.fMauSo; b.fMauSo *= c.fMauSo; } //513 Kiểm tra phâ số dương bool KiemTraPhanSoDuong(PhanSo a) { if (a.fTuSo >=0 && a.fMauSo>0) return true; return false; } //514 Kiểm tra phâ số âm bool KiemTraPhanSoAm(PhanSo a) { if (a.fTuSo <0 || a.fMauSo<0) return true; return false; } //515 So sánh 2 phân số: hàm trả về 1 trong 3 giá trị: 0,-1,1 int SoSanh2PhanSo(PhanSo a, PhanSo b) { float kq1 = a.fTuSo / a.fMauSo; float kq2 = b.fTuSo / b.fMauSo; if (kq1 < kq2) return -1; if (kq1 > kq2) return 1; return 0; } //516 Định nghĩa toán tử operator + cho 2 phân số PhanSo operator +(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo + a.fMauSo * b.fTuSo; kq.fMauSo = a.fMauSo * b.fMauSo; return kq; } //517 Định nghĩa toán tử operator - cho 2 phân số PhanSo operator -(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo - a.fMauSo * b.fTuSo; kq.fMauSo = a.fMauSo + b.fMauSo; return kq; } //518 Định nghĩa toán tử operator * cho 2 phân số PhanSo operator *(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fTuSo; kq.fMauSo = a.fMauSo * b.fMauSo; return kq; } //519 Định nghĩa toán tử operator / cho 2 phân số PhanSo operator /(PhanSo a, PhanSo b) { PhanSo kq; kq.fTuSo = a.fTuSo * b.fMauSo; kq.fMauSo = a.fMauSo * b.fTuSo; return kq; } //520 Định nghĩa toán tử operator ++ cho 2 phân số PhanSo operator ++ (PhanSo &a) { a.fTuSo += a.fMauSo; return a; } //521 Định nghĩa toán tử operator -- cho 2 phân số PhanSo operator ++ (PhanSo &a) { a.fTuSo -= a.fMauSo; return a; } void main() { PhanSo a; a.fTuSo = 5; a.fMauSo = 2; PhanSo b; b.fTuSo = 2; b.fMauSo=1; PhanSo c; //Xuat printf("\nPhan so a: "); XuatPhanSo(a); printf("\nPhan so b: "); XuatPhanSo(b); //506 a = RutGonPhanSo(a); printf("\nSau khi rut gon phan so a: "); XuatPhanSo(a); b = RutGonPhanSo(b); printf("\nSau khi rut gon phan so b: "); XuatPhanSo(b); //507 c = TinhTong2PhanSo(a,b); printf("\nTong 2 phan so: "); XuatPhanSo(c); //508 c = TinhHieu2PhanSo(a,b); printf("\nHieu 2 phan so: "); XuatPhanSo(c); //509 c = TinhTich2PhanSo(a,b); printf("\nTich 2 phan so: "); XuatPhanSo(c); //510 c = TinhThuong2PhanSo(a,b); printf("\nThuong 2 phan so: "); XuatPhanSo(c); //511 bool f = KiemTraPhanSoToiGian(a); if (f) printf("\nPhan so a toi gian roi"); else printf("\nPhan so a chua toi gian"); //512 QuiDong2PhanSo(a,b); printf("\nSau khi qui dong"); printf("\nPhan so a: "); XuatPhanSo(a); printf("\nPhan so b: "); XuatPhanSo(b); }
Link source: