Yêu cầu xây dựng cấu trúc Phân số (gồm tử và mẫu).
Viết chương trình nhập vào 2 phân số, yêu cầu xuất phân số tổng của 2 phân số đó (sau khi rút gọn ra màn hình)
Nếu input có phân số nào có mẫu bằng 0 thì xuất kết quả ra -1
ví dụ 1:
input
1 2
1 3
output
5/6
ví dụ 2:
input
1 2
1 0
output
-1
Link nộp bài: http://upcoder.hcmup.edu.vn/index.php/problems/submit/343/01e2663585613fe2026ef385bd7034dc/C%E1%BB%99ng_2_ph%C3%A2n_s%E1%BB%91
Code tham khảo:
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 | #include <iostream> #include <stdio.h> #include <cmath> using namespace std; struct phanso { int tu; int mau; }; phanso a,b, tong; void nhapdl() { cin >>a.tu >> a.mau; cin >>b.tu >> b.mau; } int ucln(int a, int b) { int r; while (a%b!=0) { r=a%b; a=b; b=r; } return b; } int main( ) { nhapdl(); if (a.mau==0 || b.mau==0) { cout << "-1"; return 0; } tong.tu = a.tu*b.mau + a.mau*b.tu; tong.mau = a.mau*b.mau; int UC = ucln(tong.tu,tong.mau); cout << tong.tu/UC << "/"<< tong.mau/UC; } |
Code tham khảo cộng 2 phân số, sử dụng toán tử
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 | #include <iostream> using namespace std; class phanso { private: int tu, mau; public: phanso(){} phanso operator+(phanso b); friend istream &operator >> (istream &in, phanso &ps); friend ostream &operator << (ostream &out, phanso ps); }; istream &operator >> (istream &in, phanso &ps) { in >> ps.tu >> ps.mau; return in; } ostream &operator << (ostream &out, phanso ps) { if (ps.mau == 0) out << "-1"; else out << ps.tu << "/" << ps.mau; return out; } int ucln(int a, int b) { int r; while (b>0) { r = a%b; a = b; b = r; } return a; } phanso phanso::operator+(phanso b) { phanso c; c.tu = tu*b.mau + mau*b.tu; c.mau = mau*b.mau; int z = ucln(c.tu, c.mau); c.tu /= z; c.mau /= z; return c; } int main() { phanso a, b; cin >> a >> b; cout << a + b; return 0; } |
keywords: Bài tập căn bản liên quan đến cấu trúc struct
Bài viết liên quan
- [Học OOP] Bài 9: Hiểu kế thừa như thế nào cho đúng trong hướng đối tượng (Phần 2)
- [Học OOP] Bài 8: Kế thừa trong lập trình hướng đối tượng c++ (Phần 1)
- [Học OOP] Bài 7: Overload toán tử trong Lập trình hướng đối tượng c++
- [Học OOP] Bài 6: Hàm bạn, lớp bạn trong hướng đối tượng c++
- [Học OOP] Bài 5: Static trong hướng đối tượng c++
- [Học OOP] Bài 4: Constructor, destructor và Copy constructor trong hướng đối tượng c++
- [Học OOP] Bài 3: Lớp trong lập trình hướng đối tượng
- [Học OOP] Bài 2: Tổng quan về lập trình hướng đối tượng
- [Học OOP] Bài 1: Các đặc điểm mới trong c++
- Giải đề thi Lập trình hướng đối tượng UIT – Đề HK2 2016-2017