Ôn tập: Bộ theo dõi điểm số cơ bản
Thuộc phần Logic và luồng chương trình trong hành trình Rust của Coddy. Bài học 14 trên 66.
Thử thách
DễBạn sẽ nhận hai đầu vào: đầu tiên là danh sách điểm được phân tách bằng dấu phẩy, tiếp theo là điểm cần thêm. Hãy tạo một vector từ các điểm ban đầu, thêm điểm mới, tính điểm trung bình của tất cả điểm và in kết quả.
Yêu cầu:
- Đọc đầu vào thứ nhất chứa các điểm được phân tách bằng dấu phẩy (ví dụ:
85,92,78) - Tách chuỗi bằng dấu phẩy và xóa khoảng trắng ở đầu và cuối từng token trước khi chuyển thành số nguyên (ví dụ: dùng
.trim()trên từng phần tử sau khi tách) - Tạo một vector có thể thay đổi từ các điểm này
- Đọc đầu vào thứ hai và chuyển thành số nguyên (xóa khoảng trắng trước)
- Dùng
.push()để thêm điểm mới vào vector - Tính điểm trung bình của tất cả điểm trong vector
- In tổng số điểm
- In điểm trung bình (dưới dạng số nguyên)
Đầu vào:
- Dòng thứ nhất: Các số nguyên được phân tách bằng dấu phẩy, biểu thị các điểm ban đầu (ví dụ:
85,92,78) - Dòng thứ hai: Một số nguyên biểu thị điểm mới cần thêm
Đầu ra:
- Dòng thứ nhất: Tổng số điểm
- Dòng thứ hai: Điểm trung bình (dưới dạng số nguyên, đã cắt phần thập phân)
Lưu ý: Luôn gọi .trim() trên toàn bộ dòng đầu vào và trên từng token điểm sau khi tách bằng dấu phẩy. Chuỗi đầu vào có thể chứa khoảng trắng hoặc ký tự xuống dòng vô hình, khiến chương trình gặp lỗi khi phân tích nếu không xóa chúng.
Tự làm thử
use std::io;
fn main() {
// Đọc các điểm số được phân tách bằng dấu phẩy
let mut scores_input = String::new();
io::stdin().read_line(&mut scores_input).expect("Failed to read line");
// Đọc điểm số mới cần thêm
let mut new_score_input = String::new();
io::stdin().read_line(&mut new_score_input).expect("Failed to read line");
// TODO: Viết code của bạn bên dưới
// 1. Tách scores_input theo dấu phẩy và chuyển thành các số nguyên
// 2. Tạo một vector có thể thay đổi từ các điểm số này
// 3. Chuyển new_score_input thành số nguyên
// 4. Push điểm số mới vào vector
// 5. Tính trung bình của tất cả điểm số
// In ra tổng số điểm số
// println!("{}", total_scores);
// In ra điểm số trung bình
// println!("{}", average);
}Tất cả bài học trong Logic và luồng chương trình
1Luồng điều khiển nâng cao
Biểu thức 'match'Khớp nhiều giá trịKhớp các phạm viBiểu thức 'if let'Vòng lặp dưới dạng biểu thứcÔn tập: Trình phân tích cú pháp lệnh đơn giản4Nhóm dữ liệu bằng Struct
Struct là gì?Tổng quan về StructTruy cập các trường của StructStruct có thể thay đổiStruct làm tham số cho hàmStruct dạng tupleÔn tập: Tạo Struct Book2Giới thiệu về vector
Vector là gì?Tạo vectorThêm phần tử bằng pushTruy cập phần tử trong vectorLặp qua vectorLặp có thể thay đổiXóa phần tửÔn tập: Bộ theo dõi điểm số cơ bản5Cặp khóa-giá trị với bảng băm
Bảng băm là gì?Tạo bảng bămThêm cặp khóa-giá trịTruy cập giá trịDuyệt qua bảng bămCập nhật giá trịXóa một cặpÔn tập: Bộ đếm từ8Dự án: Quản lý kho hàng đơn giản
Thiết lập dự ánThêm mặt hàngKiểm tra hàng tồn khoBán mặt hàngKết hợp tất cả11Thử thách cuối cùng
Ôn tập: Các mục duy nhấtÔn tập: Trình xác thực hồ sơ người dùngÔn tập: Tổng hợp điểm3Danh sách việc cần làm trên dòng lệnh
Thiết lập dự ánThêm một việcXem tất cả việcXóa một việcCode hoàn chỉnh6Xử lý giá trị vắng mặt với 'Option'
'Option' là gì?Dùng 'match' với 'Option'is_some() và is_none()Lấy giá trị từ 'Option'expectCung cấp giá trị mặc định: unwrap_orÔn tập: tìm một phần tử9Lát cắt chuỗi và hơn thế nữa
String và &strTạo lát cắt chuỗiLát cắt làm tham số hàmCác lát cắt khácÔn tập: Tìm từ đầu tiênTự luyện tập: Trình biên dịch Rust online