Câu hỏi:

13/07/2024 1,123

Tìm lỗi

Chương trình sau thực hiện nhập từ thiết bị vào chuẩn hai dòng:

- Dòng thứ nhất chứa hai số nguyên pq ghi cách nhau một dấu cách.

- Dòng thứ hai là danh sách số nguyên A = (a1, a2, …, an), các số ghi trên một dòng cách nhau một dấu cách. Dữ liệu vào đảm bảo 1 ≤ p ≤ q ≤ n. Tính và đưa ra thiết bị ra chuẩn hai số nguyên trên một dòng:

min{ai, i = p, p+1, q} và max{ai, i = p, p+1, q}.

Chương trình thỉnh thoảng cho kết quả sai với một số bộ dữ liệu p, qA nào đó. Em hãy tìm và sửa lỗi để được chương trình cho kết quả đúng với mọi bộ dữ liệu vào p, qA.

Tìm lỗi Chương trình sau thực hiện nhập từ thiết bị vào chuẩn hai dòng (ảnh 1)

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Cần bỏ câu lệnh q = q - 1 để đảm bảo phần tử cuối trong khoảng yêu cầu tham gia vào việc tìm min và max. Tham khảo chương trình sau:

Tìm lỗi Chương trình sau thực hiện nhập từ thiết bị vào chuẩn hai dòng (ảnh 2)

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

Khi người lập trình thường gặp ba loại lỗi:

- Lỗi cú pháp là lỗi câu lệnh viết không theo đúng quy định của ngôn ngữ lập trình.

- Lỗi ngoại lệ (Exceptions Error) còn gọi là lỗi Runtime, là lỗi xảy ra khi chương trình đang chạy, một lệnh nào đó không thể thực hiện được. Lỗi này sẽ được thông báo ngay trên màn hình.

- Lỗi ngữ nghĩa (còn gọi là lỗi logic) là lỗi mặc dù các câu lệnh viết đúng quy định của ngôn ngữ nhưng sai trong thao tác xử lí nào đó.

Hệ thống sẽ báo lỗi cú pháp và lỗi ngoại lệ. Để phát hiện lỗi ngữ nghĩa, người lập trình cần kiểm thử, hệ thống cung cấp công cụ Debug để người lập trình quan sát được kết quả trung gian trong quả trình chạy chương trình.

Lời giải

Môi trường do ngôn ngữ lập trình cung cấp không phát hiện được lỗi ngữ nghĩa, do vậy người lập trình phải kiểm thử sau khi viết chương trình. Khi kiểm thử, cần xây dựng các bộ dữ liệu đầu vào để chạy thử nhằm phát hiện lỗi của chương trình. Một chương trình nếu có lỗi ngữ nghĩa thì có thể đưa ra kết quả đúng đối với một số bộ dữ liệu vào nhưng vẫn đưa ra kết quả sai đối với một số bộ dữ liệu khác. Việc kiểm thử cũng chỉ làm tăng tính đáng tin cậy của chương trình chứ không chứng minh được chương trình chạy đúng với mọi bộ dữ liệu vào. Tuy nhiên chất lượng của việc kiểm thử phụ thuộc vào việc đưa ra các bộ dữ liệu vào để kiểm thử và đem lại mức đáng tin cậy của chương trình.

Câu 4

Sửa lỗi cho chương trình

Xét bài toán: Robot hạ cánh xuống vùng cần thăm dò ở trạng thái quay mặt về hướng Đông.

Có ba lệnh điều khiển chuyển động: L - quay sang trái và tiến một bước, R - quay sang phải và tiến một bước, C – tiến một bước theo hướng đang đi. Các lệnh robot nhận được trong ngày được lưu trữ dưới dạng xâu Trace chỉ chứa các kí tự từ tập {L, R, C}. Hình bên minh hoạ một số chuyển động của robot. Để chuẩn bị cho trạng thái ngủ qua đêm người ta cần biết cuối ngày robot đang quay mặt nhìn về hướng nào.

Sửa lỗi cho chương trình  Xét bài toán: Robot hạ cánh xuống vùng cần thăm dò  (ảnh 1)

Hãy xác định hướng quay mặt của robot và đưa ra kết quả dưới dạng một kí tự từ tập {E, N, W, S}, trong đó E là hướng Đông, N là hướng Bắc, W là hướng Tây và S là hướng Nam.

Dữ liệu: Gồm một dòng chứa xâu Trace được nhập vảo từ thiết bị vào chuẩn.

Kết quả: Đưa ra thiết bị ra chuẩn một kí tự xác định hướng nhìn của robot.

Gợi ý thuật toán:

- Xét hướng ban đầu của robot: Đông (E).

- Sau một lần rẽ trái (lệnh L) robot chuyển sang hướng Bắc (N).

- Sau hai lần rẽ trái (lệnh L) robot chuyển sang hướng Tây (W).

- Sau ba lần rẽ trái (lệnh L) robot chuyển sang hướng Nam (S).

- Sau bốn lần rẽ trái (lệnh L) robot quay trở về hướng Đông (E).

- Một lần rẽ phải (lệnh R) tương đương với ba lần rẽ trái (không tính chuyển động).

- Các lệnh C - không thay đổi hướng đi.

Như vậy tính số lần rẽ theo lệnh L ta dễ dàng xác định hướng nhìn của robot ở cuối hành trình đã cho.

Chương trình ở hình sau thực hiện bài toán trên. Chương trình không có lỗi cú pháp nhưng khi thực hiện cho kết quả sai. Em hãy tìm chỗ sai và sửa lại để có chương trình đúng.

Sửa lỗi cho chương trình  Xét bài toán: Robot hạ cánh xuống vùng cần thăm dò  (ảnh 2)

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Vietjack official store
Đăng ký gói thi VIP

VIP +1 - Luyện thi tất cả các đề có trên Website trong 1 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +3 - Luyện thi tất cả các đề có trên Website trong 3 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +6 - Luyện thi tất cả các đề có trên Website trong 6 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +12 - Luyện thi tất cả các đề có trên Website trong 12 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay