logo
ADVERTISEMENT

Tin học 11 Kết nối tri thức Bài 28 trang 127, 131

1. Nếu công việc bổ sung 3 có thêm yêu cầu in ra số lượng mặt hàng đã bán trong ngày thì cần thêm hay sửa lệnh nào của chương trình BC2(). 2. Viết thêm một chương trình cho công việc bổ sung 4 như sau: Cần in ra danh sách 1⁄3 số mặt hàng có doanh số thấp nhất trong ngày.

Bài 28: Thiết kế chương trình theo Mô đun


1. Nếu công việc bổ sung 3 có thêm yêu cầu in ra số lượng mặt hàng đã bán trong ngày thì cần thêm hay sửa lệnh nào của chương trình BC2().

Trả lời:

Sửa lệnh prinf "in ra số lượng mặt hàng bán trong ngày"


2. Viết thêm một chương trình cho công việc bổ sung 4 như sau: Cần in ra danh sách 1⁄3 số mặt hàng có doanh số thấp nhất trong ngày.

Trả lời:

Để thực hiện công việc bổ sung 4, ta có thể sử dụng thuật toán sắp xếp dữ liệu theo thứ tự tăng dần của doanh số, sau đó lấy 1/3 số mặt hàng đầu tiên làm danh sách các mặt hàng có doanh số thấp nhất.

Dưới đây là một ví dụ cách viết chương trình để thực hiện công việc này:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct MatHang {
   string tenMatHang;
   int doanhSo;
};

bool cmp(MatHang a, MatHang b) {
   return a.doanhSo < b.doanhSo;
}

int main() {
   int n;
   cout << "Nhap so luong mat hang: ";
   cin >> n;

   vector<MatHang> danhSachMatHang(n);

   for (int i = 0; i < n; i++) {
       cout << "Nhap ten mat hang thu " << i + 1 << ": ";
       cin >> danhSachMatHang[i].tenMatHang;

       cout << "Nhap doanh so cua mat hang thu " << i + 1 << ": ";
       cin >> danhSachMatHang[i].doanhSo;
   }

   sort(danhSachMatHang.begin(), danhSachMatHang.end(), cmp);

   cout << endl << "Danh sach 1/3 mat hang co doanh so thap nhat:" << endl;

   int soMatHangThapNhat = n / 3;

   for (int i = 0; i < soMatHangThapNhat; i++) {
       cout << danhSachMatHang[i].tenMatHang << ": " << danhSachMatHang[i].doanhSo << endl;
   }

   return 0;
}

Chương trình trên sử dụng vector để lưu danh sách các mặt hàng và cấu trúc MatHang để lưu thông tin về tên và doanh số của từng mặt hàng. Hàm cmp được sử dụng để so sánh các mặt hàng theo thứ tự tăng dần của doanh số. Sau khi nhập thông tin về danh sách các mặt hàng, chương trình sử dụng hàm sort để sắp xếp danh sách các mặt hàng theo thứ tự tăng dần của doanh số. Cuối cùng, chương trình in ra danh sách 1/3 mặt hàng có doanh số thấp nhất bằng cách lấy các mặt hàng đầu tiên trong danh sách đã được sắp xếp.


3. Thiết lập chương trình cho công việc thường làm vào cuối giờ bán hàng: Cho trước số K (một doanh số giả định), cần tìm ra mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất. Bài toán này có thể sử dụng thuật toán tìm kiếm nào để giải?

Trả lời:

Bài toán này có thể sử dụng thuật toán tìm kiếm nhị phân để giải.

Cách tiếp cận:

- Sắp xếp mảng mặt hàng theo thứ tự tăng dần của doanh số.

- Sử dụng thuật toán tìm kiếm nhị phân để tìm phần tử đầu tiên có giá trị lớn hơn hoặc bằng K.

- Nếu phần tử này là phần tử đầu tiên trong mảng, thì phần tử có doanh số nhỏ hơn K nhưng gần K nhất sẽ là phần tử cuối cùng trong mảng.

- Nếu không, so sánh giá trị của phần tử đó với phần tử liền trước nó trong mảng. Phần tử có doanh số nhỏ hơn K nhưng gần K nhất sẽ là phần tử lớn hơn hoặc bằng K và gần K hơn phần tử tại vị trí trước đó.

Độ phức tạp thời gian của thuật toán này là O(log n), với n là số lượng phần tử trong mảng mặt hàng.


4. Em hãy giúp công ty du lịch thiết lập tour du lịch tối ưu cho khách hàng nếu biết trước các đánh giá của khách hàng đó.

* Gợi ý:

Để thiết lập tour du lịch tối ưu cho khách hàng dựa trên đánh giá của họ, có thể sử dụng thuật toán tối ưu hóa chọn lọc (genetic algorithm) như sau:

- Xác định bài toán tối ưu: Trước tiên, ta cần xác định các yếu tố cần tối ưu trong tour du lịch, ví dụ như chi phí, thời gian, chất lượng dịch vụ, độ hấp dẫn của các điểm đến, v.v.

- Xác định mục tiêu tối ưu: Tiếp theo, ta cần xác định mục tiêu tối ưu, ví dụ như tối thiểu hóa chi phí, tối đa hóa chất lượng dịch vụ, tối đa hóa độ hấp dẫn của các điểm đến, v.v.

- Xây dựng bộ gen và phép lai ghép: Ta sẽ biểu diễn tour du lịch bằng một chuỗi gen, mỗi gen tương ứng với một điểm đến. Bộ gen có thể được xây dựng bằng cách sử dụng các phương pháp định lượng (ví dụ như mã hóa nhị phân) hoặc định tính (ví dụ như sử dụng tên địa điểm). Sau đó, ta cần xác định phép lai ghép để tạo ra các thế hệ con mới từ các thế hệ cha.

- Xây dựng phép đột biến: Để đảm bảo tính đa dạng của các thế hệ con, ta cần xác định phép đột biến để tạo ra các gen mới trong mỗi thế hệ.

- Xác định hàm fitness: Ta cần xây dựng hàm fitness để đánh giá độ tốt của từng cá thể trong mỗi thế hệ.

- Chọn lọc: Cuối cùng, ta sử dụng phép chọn lọc để chọn ra các cá thể tốt nhất trong mỗi thế hệ để tiếp tục tham gia vào quá trình lai ghép và đột biến cho đến khi đạt được kết quả tối ưu.

- Quá trình tối ưu hóa chọn lọc có thể được thực hiện thông qua việc lập trình bằng các ngôn ngữ như Python, Java hoặc C++.

>>> Xem toàn bộ: Soạn Tin 11 Kết nối tri thức

-------------------------------------

Trên đây Toploigiai đã cùng các bạn Trả lời câu hỏi Tin học 11 Kết nối tri thức Bài 26 trang 127, 131: Thiết kế chương trình theo Mô đun trong bộ SGK Kết nối tri thức theo chương trình sách mới. Chúng tôi hi vọng các bạn đã có kiến thức hữu ích khi đọc bài viết này. Click vào trang chủ Toploigiai để tham khảo và chuẩn bị bài cho năm học mới nhé. Chúc các bạn học tốt!

Tham khảo các bài học khác

ADVERTISEMENT