[C++] Xây dựng các toán tử > < == để so sánh các phân số
Xây dựng lớp phân số mô tả đối tượng phân số gồm các thành phần:
* Các thành phần thuộc tính:
– a: mô tả phần tử số; b: mô tả phần mẫu số.
* Các phương thức:
– Phương thức nhập phân số
– Phương thức hiện thị phân số (dạng a/b)
Viết chương trình thực hiện việc nhập vào một dãy gồm n phân số và thực hiện các công việc sau:
– Xây dựng toán tử > dùng để so sánh hai phân số. Tiến hành sắp xếp mảng phân số đã nhập theo chiều tăng dần. Hiển thị ra màn hình.
– Xây dựng toán tử >= dùng để só sánh hai phân số. Tìm và hiển thị phân số lớn nhất ra màn hình.
– Xây dựng toán tử >= dùng để so sánh hai phân số. tìm và hiển thị phân số nhỏ nhật ra màn hình.
– Xây dựng hàm rút gọn dùng để rút gọn phân số. Hiển thị ra dãy phân số đã nhập dưới dạng rút gọn.
– Xây dựng toán tử == để so sánh hai phân số. Nhập thêm một phân số X. Hỏi xem X có trong dãy phân số đã nhập hay không.
DEMO
CODE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | #include <iostream> #include <math.h> using namespace std; class phanso { private: double a; double b; public: void nhapsl() { cout << "\n nhap tu so :"; cin >> a; cout << " nhap mau so :"; cin >> b; } void insl() { cout << " " << a << "/" << b; } bool operator == (phanso &); bool operator != (phanso &); bool operator > (phanso &); bool operator < (phanso &); bool operator >= (phanso &); bool operator <= (phanso &); int phanso::ucln(int a, int b) { a = abs(a); b = abs(b); if (a*b == 0) return 1; while (a != b) if (a>b) a -= b; else b -= a; return a; } // rut gon ps void phanso::rutgon() { int u; u = ucln(a, b); a = a / u; b = b / u; } }; bool phanso::operator > (phanso &r) { int ts1, ms1; ts1 = a*r.b - b*r.a; ms1 = b * r.b; return (ts1*ms1 > 0); } bool phanso::operator < (phanso & r) { if (r>*this) return true; return false; } bool phanso::operator >= (phanso & r) { if (r>*this) return true; return false; } bool phanso::operator <= (phanso & r) { if (r < *this) return true; return false; } phanso max(phanso a[], int n) { phanso max = a[0]; for (int i = 1; i < n; i++) { if (a[i] >= max) max = a[i]; } return max; } phanso min(phanso a[], int n) { phanso min = a[0]; for (int i = 1; i < n; i++) { if (a[i] <= min) min = a[i]; } return min; } void sapxep(phanso a[], int n) { phanso tam; int i, j; for (i = 0; i < n; ++i) for (j = i + 1; j < n; ++j) if (a[j] < a[i]) { tam = a[i]; a[i] = a[j]; a[j] = tam; } } bool phanso::operator == (phanso & r) { if (!(*this>r) && !(r>*this)) return true; return false; } void main() { phanso p, a[100], psmax,psmin,x; int n; bool tx=false; cout << "nhap so luong phan so: "; cin >> n; for (int i = 0; i < n; i++) { cout << "\nNhap vao so thu " << i+1 << ": "; a[i].nhapsl(); } cout << "\nDay sap xep la: "; sapxep(a, n); for (int i = 0; i < n; i++) { a[i].insl(); } cout << "\nPhan so lon nhat la: "; psmax = max(a, n); psmax.insl(); cout << "\nPhan so nho nhat la: "; psmin = min(a, n); psmin.insl(); cout << "\nDay phan so sau khi rut gon la: "; for (int i = 0; i < n; i++) { a[i].rutgon(); } for (int i = 0; i < n; i++) { a[i].insl(); } x.nhapsl(); for (int i = 0; i < n; i++) { if (x == a[i]) { tx = true; cout << "\nPhan so vua nhap co trong day phan so. "; break; } } if (tx == false) cout << "Phan so vua nhap khong co trong day"; cout << "\n\n"; system("pause"); } |
Xem thêm : Tổng hợp các bài, dạng ,ngôn ngữ…nghành CNTT
Tổng Hợp Phần Mềm AIO Version 6.0 – Mới nhất 2017
Facebook Comments Plugin Powered byVivacity Infotech Pvt. Ltd.