Bài 1: Viết chương trình nhập vào N phân số (mỗi dòng gồm 2 số nguyên là tử số và mẫu số), yêu cầu tìm phân số nhỏ nhất trong các phân số trên (sau khi tối giản).
Input
Output
1 2 2 4
1/2
include <iostream>
using namespace std;
struct PhanSo { int tu, mau; };
istream& operator >> (istream & is, PhanSo & m) { is >> m.tu >> m.mau; return is; }
ostream& operator << (ostream & os, PhanSo m) { os << m.tu << "/" << m.mau; return os; }
int UCLN(int m , int n) { if (m == 0 && n == 0) return 1; while (m != n) {if (m > n) m -= n; else n -= m; } return m; }
void Rutgon(PhanSo & m) { int d = UCLN(m.tu, m.mau); m.tu /= d; m.mau /= d; }
bool operator > (PhanSo m, PhanSo n) { if (m.tu / m.mau > n.tu / n.mau)return true; return false; }
int main () { int d , bdem = 1; PhanSo A[100]; while (cin >> A[bdem]) {Rutgon(A[bdem]); ++bdem; } PhanSo K = A[1]; for (int i = 2; i < bdem; i++) {if (K > A[i]){ K=A[i]; } } cout << K; return 0; }
Bài 2: Nhập vào một danh sách lớp SinhVien, yêu cầu xuất ra thông tin của tất cả sinh viên có điểm trung bình cao nhất và thấp nhất trong lớp đó.