Struct - Khang
Cấu trúc sinh viên
Nộp bàiPoint: 1
Hãy xây dựng một cấu trúc SinhVien gồm các thông tin: Họ tên (chuỗi có dấu cách), Tuổi (số nguyên), Điểm GPA (số thực). Viết chương trình nhập thông tin cho 1 sinh viên và in ra màn hình.
Input:
Dòng 1: Họ và tên sinh viên.
Dòng 2: Tuổi.
Dòng 3: Điểm GPA.
Output:
In ra chuỗi "Ten: [Ten], Tuoi: [Tuoi], GPA: [GPA]" (GPA làm tròn 2 chữ số thập phân).
Ví dụ
Input:
Nguyen Van A
20
3.567
Output:
Ten: Nguyen Van A, Tuoi: 20, GPA: 3.57
Tổng hai phân số
Nộp bàiPoint: 1
Xây dựng cấu trúc PhanSo gồm tử số và mẫu số (số nguyên). Nhập vào 2 phân số, tính tổng của chúng và in ra kết quả dưới dạng tối giản.
Input:
Dòng 1: Tử số và mẫu số của phân số thứ nhất.
Dòng 2: Tử số và mẫu số của phân số thứ hai.
Output:
Phân số tổng đã tối giản dạng "tu/mau".
Ví dụ
Input:
1 2
1 3
Output:
5/6
Khoảng cách giữa hai điểm
Nộp bàiPoint: 1
Xây dựng cấu trúc Point gồm tọa độ x và y (số thực). Tính khoảng cách giữa 2 điểm A và B trong hệ tọa độ Oxy.
Input:
Dòng 1: Tọa độ x y của điểm A.
Dòng 2: Tọa độ x y của điểm B.
Output:
Khoảng cách giữa hai điểm, làm tròn 4 chữ số thập phân.
Ví dụ
Input:
0 0 3 4
Output:
5.0000
Tìm sinh viên điểm cao nhất
Nộp bàiPoint: 1
Cho danh sách N sinh viên với thông tin: mã sinh viên (số nguyên), tên (chuỗi không khoảng trắng), điểm (số thực). Tìm sinh viên có điểm cao nhất. Nếu điểm bằng nhau, lấy người có mã sinh viên nhỏ hơn.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: Mã SV, Tên, Điểm.
Output:
Thông tin sinh viên điểm cao nhất (Mã Tên Điểm).
Ví dụ
Input:
3
1 An 8.5
2 Binh 9.0
3 Cuong 9.0
Output:
2 Binh 9.0
Số phức
Nộp bàiPoint: 1
Xây dựng struct SoPhuc gồm phần thực và phần ảo. Tính tổng và tích của 2 số phức.
Input:
Dòng 1: Phần thực và phần ảo số thứ nhất.
Dòng 2: Phần thực và phần ảo số thứ hai.
Output:
Dòng 1: Tổng 2 số phức (dạng a + bi).
Dòng 2: Tích 2 số phức (dạng a + bi).
Ví dụ
Input:
1 2
3 4
Output:
4 + 6i
-5 + 10i
Sắp xếp sinh viên theo gpa
Nộp bàiPoint: 1
Cho danh sách sinh viên. Hãy sắp xếp danh sách theo thứ tự điểm GPA giảm dần.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: Tên (không dấu cách), GPA.
Output:
Danh sách đã sắp xếp, mỗi sinh viên một dòng.
Ví dụ
Input:
3
Lan 7.5
Diep 8.0
Hung 6.5
Output:
Diep 8.0
Lan 7.5
Hung 6.5
Tính diện tích tam giác (6)
Nộp bàiPoint: 1
Tính chu vi và diện tích tam giác (dùng công thức ½ * a * h)
Mô tả: Nhập độ dài 3 cạnh của tam giác và chiều cao tương ứng với đáy. Tính chu vi và diện tích (dùng công thức diện tích tam giác:
Input: 4 dòng:
Dòng 1: cạnh đáy: a
Dòng 2: cạnh thứ 2: b
Dòng 3: cạnh thứ 3: c
Dòng 4: chiều cao
h ứng với cạnh đáy
Output: 2 dòng:
Dòng 1: Chu vi tam giác (2 chữ số thập phân)
Dòng 2: Diện tích tam giác (2 chữ số thập phân)
Input:
6
5
4
3
Output:
15.00
9.00
Tính tổng lương nhân viên
Nộp bàiPoint: 1
Struct NhanVien gồm: Tên (chuỗi), Lương Cơ Bản (nguyên), Thưởng (nguyên). Tính tổng thực lĩnh (Lương Cơ Bản + Thưởng) của tất cả nhân viên.
Input:
Dòng 1: N (số lượng nhân viên).
N dòng tiếp theo, mỗi dòng: Tên LuongCoBan Thuong.
Output:
Tổng số tiền công ty phải trả.
Ví dụ
Input:
2
A 1000 200
B 2000 500
Output:
3700
Phép chia phân số
Nộp bàiPoint: 1
Nhập 2 phân số. Thực hiện phép chia phân số 1 cho phân số 2 và in kết quả tối giản.
Input:
2 dòng, mỗi dòng gồm tử số và mẫu số.
Output:
Kết quả phép chia tối giản dạng a/b.
Ví dụ
Input:
1 2 3 4
Output:
2/3
Quản lý sách
Nộp bàiPoint: 1
Struct Sach gồm: TenSach (chuỗi, có thể có dấu cách), TacGia (chuỗi), GiaTien (nguyên). Tìm quyển sách có giá tiền thấp nhất.
Input:
Dòng 1: Số nguyên N.
N lần nhập tiếp theo: Mỗi lần nhập gồm 3 dòng (Tên sách, Tác giả, Giá).
Output:
Tên quyển sách rẻ nhất.
Ví dụ
Input:
2
Lap trinh C
Giao su X
50000
Tin hoc co so
Thay Y
30000
Output:
Tin hoc co so
Diện tích hình chữ nhật (struct)
Nộp bàiPoint: 1
Struct HinhChuNhat gồm ChieuDai và ChieuRong. Nhập N hình chữ nhật, tìm diện tích của hình có diện tích lớn nhất.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: mỗi dòng là dài và rộng.
Output:
Diện tích lớn nhất tìm được.
Ví dụ
Input:
3 2 3 5 5 4 6
Output:
25
Chênh lệch thời gian
Nộp bàiPoint: 1
Struct Time gồm giờ, phút, giây. Nhập 2 mốc thời gian, tính khoảng cách giữa chúng theo giây.
Input:
Dòng 1: h1 m1 s1.
Dòng 2: h2 m2 s2.
Output:
Số giây chênh lệch (giá trị tuyệt đối).
Ví dụ
Input:
1 0 0 1 1 5
Output:
65
Tìm kiếm sinh viên theo thành phố
Nộp bàiPoint: 1
Struct SinhVien gồm Tên và ThanhPho (không khoảng trắng). Nhập danh sách và một tên thành phố cần tìm. Liệt kê tên các sinh viên ở thành phố đó.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: Tên ThanhPho.
Dòng cuối: Tên thành phố cần tìm.
Output:
Tên các sinh viên tìm thấy, mỗi tên 1 dòng. Nếu không có ai in "Khong tim thay".
Input:
3
Nam HaNoi
Bac SaiGon
Trung HaNoi
HaNoi
Output:
Nam
Trung
Hàm hủy (destructor)
Nộp bàiPoint: 1
Xây dựng struct Message lưu trữ một nội dung tin nhắn (string).
Hàm tạo: In ra "Khoi tao: " + nội dung.
Hàm hủy: In ra "Huy: " + nội dung. Viết chương trình nhập vào một chuỗi, tạo đối tượng trong một phạm vi hẹp (trong cặp ngoặc {}) để thấy hàm hủy được gọi tự động.
Đầu vào:
Một dòng chứa nội dung tin nhắn (không khoảng trắng).
Đầu ra:
Dòng 1: Thông báo từ hàm tạo.
Dòng 2: Thông báo từ hàm hủy.
Ràng buộc:
Chuỗi không quá 100 ký tự.
Ví dụ:
Input:
Hello
Output:
Khoi tao: Hello
Huy: Hello
Cộng số phức (operator+)
Nộp bàiPoint: 1
Xây dựng struct SoPhuc gồm phần thực và phần ảo. Sử dụng hàm tạo để khởi tạo. Nạp chồng toán tử + để cộng hai số phức (thực cộng thực, ảo cộng ảo).
Đầu vào:
Dòng 1: Phần thực và ảo của số A.
Dòng 2: Phần thực và ảo của số B.
Đầu ra:
Số phức tổng dạng: Thuc Ao (cách nhau bởi dấu cách).
Ràng buộc:
Giá trị là số nguyên.
Ví dụ:
Input:
1 2 3 4
Output:
4 6
So sánh sinh viên (operator<)
Nộp bàiPoint: 1
Xây dựng struct SinhVien gồm Mã (string) và GPA (float). Nạp chồng toán tử < để so sánh hai sinh viên dựa trên GPA. Nếu GPA bằng nhau thì so sánh Mã theo thứ tự từ điển.
Đầu vào:
Dòng 1: N (số lượng sinh viên).
N dòng tiếp theo: Mã và GPA.
Đầu ra:
Danh sách sinh viên sau khi sắp xếp tăng dần theo tiêu chí đã định nghĩa (làm tròn lấy 1 chữ số sau phần thập phân).
Ràng buộc:
1 <= N <= 100.
Ví dụ:
Input:
2
B2001 3.5
A1001 3.5
Output:
A1001 3.5 B2001 3.5
Nhập xuất điểm (operator>> và operator<<)
Nộp bàiPoint: 1
Xây dựng struct Diem2D gồm tọa độ x, y. Nạp chồng toán tử nhập (>>) và xuất (<<) để có thể dùng cin >> p và cout << p một cách trực tiếp. Định dạng xuất là: (x, y).
Đầu vào:
Một dòng chứa 2 số nguyên x và y.
Đầu ra:
In ra tọa độ theo định dạng (x, y).
Ràng buộc:
x, y kiểu int.
Ví dụ:
Input:
5 10
Output:
(5, 10)
Nhập xuất đơn thức (nạp chồng cin, cout)
Nộp bàiPoint: 1
Xây dựng struct DonThuc gồm hệ số (số thực) và số mũ (số nguyên).
Nạp chồng toán tử >> để nhập hệ số và số mũ.
Nạp chồng toán tử << để in ra đơn thức theo định dạng: heSo*x^soMu.
Lưu ý: In ra các hệ số của đơn thức luôn lấy 1 chữ số sau phần thập phân
Đầu vào:
Một dòng chứa hệ số và số mũ.
Đầu ra:
Chuỗi biểu diễn đơn thức.
Ràng buộc:
Số mũ >= 0.
Ví dụ:
Input:
5.5 2
Output:
5.5*x^2
Khoảng cách (hàm tạo)
Nộp bàiPoint: 1
Xây dựng struct Diem gồm x, y. Viết hàm tạo có tham số để khởi tạo tọa độ. Viết phương thức tính khoảng cách từ điểm hiện tại tới gốc tọa độ (0,0).
Đầu vào:
Dòng 1: N (số điểm).
N dòng sau: x y.
Đầu ra:
Khoảng cách của từng điểm tới gốc tọa độ (làm tròn 2 chữ số thập phân).
Ràng buộc:
-1000 <= x, y <= 1000.
Ví dụ:
Input:
2
3 4
0 1
Output:
5.00 1.00
Hiệu thời gian (operator-)
Nộp bàiPoint: 1
Xây dựng struct ThoiGian gồm gio, phut, giay. Nạp chồng toán tử - để tính khoảng cách giữa 2 mốc thời gian (trả về tổng số giây chênh lệch).
Đầu vào:
Dòng 1: gio phut giay (thời điểm 1).
Dòng 2: gio phut giay (thời điểm 2).
Đầu ra:
Số giây chênh lệch tuyệt đối giữa 2 thời điểm.
Ràng buộc:
Thời gian hợp lệ (0 <= gio <= 23, 0 <= phut, giay <= 59).
Ví dụ:
Input:
1 0 0
1 1 30
Output:
90
Diện tích hình chữ nhật (operator>)
Nộp bàiPoint: 1
Xây dựng struct HinhChuNhat gồm dai, rong. Viết hàm tạo. Nạp chồng toán tử > để so sánh diện tích của 2 hình chữ nhật.
Đầu vào:
Dòng 1: dai rong (hình 1).
Dòng 2: dai rong (hình 2).
Đầu ra:
In ra "Hinh 1 lon hon" nếu diện tích hình 1 > hình 2, ngược lại in "Hinh 1 khong lon hon".
Ràng buộc:
Kích thước là số nguyên dương.
Ví dụ:
Input:
4 5
2 8
Output:
Hinh 1 lon hon
Tích vô hướng (operator*)
Nộp bàiPoint: 1
Xây dựng struct Vector2D gồm x, y. Nạp chồng toán tử * để tính tích vô hướng của 2 vectơ (x1x2 + y1y2).
Đầu vào:
Dòng 1: x1 y1.
Dòng 2: x2 y2.
Đầu ra:
Giá trị tích vô hướng.
Ràng buộc:
Giá trị tọa độ kiểu long long.
Ví dụ:
Input:
1 2
3 4
Output:
11
Nhập xuất hỗn số (nạp chồng cin, cout)
Nộp bàiPoint: 1
Xây dựng struct HonSo gồm phần nguyên, tử số, mẫu số.
Nạp chồng toán tử >> để nhập 3 thành phần theo thứ tự: nguyên, tử, mẫu.
Nạp chồng toán tử << để in ra hỗn số theo định dạng: phannguyen(tuso/mau_so).
Đầu vào:
Một dòng chứa 3 số nguyên dương: phần nguyên, tử số, mẫu số.
Đầu ra:
Biểu diễn hỗn số.
Ràng buộc:
Mẫu số khác 0. Các giá trị trong khoảng int.
Ví dụ:
Input:
3 1 2
Output:
3(1/2)
Nhập xuất tài khoản ngân hàng (nạp chồng cin, cout)
Nộp bàiPoint: 1
Xây dựng struct TaiKhoan gồm Số tài khoản (chuỗi) và Số dư (số nguyên long long).
Nạp chồng toán tử >> để nhập Số tài khoản và Số dư.
Nạp chồng toán tử << để in ra thông báo số dư theo định dạng: "Tai khoan: [SoTK] | So du: [SoDu] VND".
Đầu vào:
Dòng 1: Số tài khoản (không chứa khoảng trắng).
Dòng 2: Số dư.
Đầu ra:
Chuỗi thông báo định dạng.
Ràng buộc:
Số dư >= 0.
Ví dụ:
Input:
0123456789
5000000
Output:
Tai khoan: 0123456789 | So du: 5000000 VND
Máy tính phân số
Nộp bàiPoint: 1
Mô tả: Xây dựng cấu trúc PhanSo gồm tử số và mẫu số. Hãy thực hiện các phép tính cộng, trừ, nhân, chia cho 2 phân số và in kết quả dưới dạng tối giản. Đặc biệt, chương trình phải xử lý được dấu âm (ví dụ mẫu số âm phải chuyển dấu lên tử) và rút gọn phân số sau mỗi phép tính.
Yêu cầu kỹ thuật:
Nạp chồng toán tử nhập >> và xuất << .
Nạp chồng các toán tử + , - , * , /.
Tự động rút gọn phân số khi khởi tạo hoặc sau khi tính toán.
Dữ liệu vào:
• Dòng duy nhất chứa 4 số nguyên a, b, c, d lần lượt là tử và mẫu của phân số thứ nhất, tử và mẫu của phân số thứ hai (b, d ‡ 0).
Giá trị: -10^9 <= a, b, c, d <= 10^9
Dữ liệu ra:
• 4 dòng lần lượt là kết quả của: Tổng, Hiệu, Tích, Thương.
Ví dụ:
Input:
1 2 3 4
Output:
5/4
-1/4
3/8
2/3
Điểm tọa độ (cmp)
Nộp bàiPoint: 1
Trong mặt phẳng tọa độ Oxy, cho N điểm. Hãy sắp xếp các điểm theo khoảng cách từ điểm đó đến gốc tọa độ O(0,0) tăng dần. Nếu khoảng cách bằng nhau, điểm nào có hoành độ (x) nhỏ hơn đứng trước.
Dữ liệu vào:
Dòng 1: N.
N dòng tiếp theo: Mỗi dòng chứa 2 số nguyên x, y.
Dữ liệu ra:
Danh sách các điểm (x y) sau khi sắp xếp.
Ràng buộc:
1 <= N <= 10^4
|x|, |y| <= 1000
Ví dụ:
Input:
3
1 1
0 2
3 0
Output:
1 1 0 2 3 0
Giải thích: d(1,1)=căn(2), d(0,2)=2, d(3,0)=3.