Giải SGK Tin học 11 (Kết nối tri thức) Bài 20: Thực hành bài toán tìm kiếm

1900.edu.vn xin giới thiệu giải bài tập Tin học lớp 11 Bài 20: Thực hành bài toán tìm kiếm sách Kết nối tri thức hay nhất, ngắn gọn giúp học sinh dễ dàng làm bài tập Tin học 11 Bài 20.

Giải Tin học 11 Bài 20: Thực hành bài toán tìm kiếm

Luyện tập

Luyện tập trang 98 Tin học 11: Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần.

Lời giải:

Def BinrySearch(A,K):

     left=0

     right=len(A)-1

     while left<=right:

         mid=(left+right)//2

         if A[mid]==K:

          return mid

         elif A[mid]

          left=mid-1

         else:

          right=mid+1

     return -1

input_file=open(“diemthi_sx.inp”)

ds_diem=[]

for line in input_file.readlines():

     ds_diem.append(float(line))

input_file.close():

diem=float(input(‘nhập điểm số cần kiểm tra:’))

vitri=BanirySearch(ds_diem,diem)

if vitri==-1:

     print(‘không tồn tại điểm số cần tìm trong danh sách’)

else:

     print(‘điểm cần tìm nằm ở hàng thứ’,vitri,’trong danh sách’)

Vận dụng

Vận dụng trang 98 Tin học 11: Viết chương trình tra cứu tên theo điểm thi của học sinh trong lớp. Chương trình cho phép người dùng nhập vào khoảng điểm số cần tìm kiếm (ví dụ từ 6 đến 8). Chương trình kiểm tra và thông báo tên của học sinh có điểm số nằm trong khoảng tương ứng. Giải bài toán trong hai trường hợp: điểm được sắp xếp theo thứ tự ngẫu nhiên như trong Nhiệm vụ 1 hoặc điểm được sắp xếp theo thứ tự tăng dẫn như sau:

Sơn 5.6

Huyền 7.4

Nam 7.8

Hùng 8.4

Hương 8.9

Hà 9.5

Lời giải:

1.Điểm được sắp xếp theo thứ tự ngẫu nhiên:

# Danh sách tên học sinh

class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"]

# Danh sách điểm thi tương ứng

class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5]

# Nhập khoảng điểm cần tra cứu

start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: "))

end_score = float(input("Nhập điểm kết thúc của khoảng điểm: "))

# Kiểm tra và thông báo tên học sinh có điểm nằm trong khoảng tương ứng

found = False

for i in range(len(class_names)):

  if class_scores[i] >= start_score and class_scores[i] <= end_score:

   print("Học sinh", class_names[i], "có điểm là", class_scores[i])

   found = True

if not found:

  print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.")

2.Điểm được sắp xếp theo thứ tự tăng dần:

# Danh sách tên học sinh

class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"]

# Danh sách điểm thi tương ứng (đã được sắp xếp theo thứ tự tăng dần)

class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5]

# Nhập khoảng điểm cần tra cứu

start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: "))

end_score = float(input("Nhập điểm kết thúc của khoảng điểm: "))

# Tìm kiếm nhị phân để tra cứu tên học sinh

found = False

low = 0

  high = len(class_names) – 1

while low <= high:

  mid = (low + high) // 2

  if class_scores[mid] >= start_score and class_scores[mid] <= end_score:

   print("Học sinh", class_names[mid], "có điểm là", class_scores[mid])

   found = True

   break

  elif class_scores[mid] < start_score:

   low = mid + 1

  else:

   high = mid - 1

if not found:

  print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.")

Xem thêm lời giải bài tập SGK Tin học 11 Kết nối tri thức hay, chi tiết khác:

Câu hỏi liên quan

1.Điểm được sắp xếp theo thứ tự ngẫu nhiên: # Danh sách tên học sinh class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"] # Danh sách điểm thi tương ứng class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5] # Nhập khoảng điểm cần tra cứu start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: ")) end_score = float(input("Nhập điểm kết thúc của khoảng điểm: ")) # Kiểm tra và thông báo tên học sinh có điểm nằm trong khoảng tương ứng found = False for i in range(len(class_names)):   if class_scores[i] >= start_score and class_scores[i] <= end_score:    print("Học sinh", class_names[i], "có điểm là", class_scores[i])    found = True if not found:   print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.") 2.Điểm được sắp xếp theo thứ tự tăng dần: # Danh sách tên học sinh class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"] # Danh sách điểm thi tương ứng (đã được sắp xếp theo thứ tự tăng dần) class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5] # Nhập khoảng điểm cần tra cứu start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: ")) end_score = float(input("Nhập điểm kết thúc của khoảng điểm: ")) # Tìm kiếm nhị phân để tra cứu tên học sinh found = False low = 0   high = len(class_names) – 1 while low <= high:   mid = (low + high) // 2   if class_scores[mid] >= start_score and class_scores[mid] <= end_score:    print("Học sinh", class_names[mid], "có điểm là", class_scores[mid])    found = True    break   elif class_scores[mid] < start_score:    low = mid + 1   else:    high = mid - 1 if not found:   print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.")
Xem thêm
Def BinrySearch(A,K):      left=0      right=len(A)-1      while left<=right:          mid=(left+right)//2          if A[mid]==K:           return mid          elif A[mid] Xem thêm
Xem tất cả hỏi đáp với chuyên mục: Thực hành bài toán tìm kiếm
Bình luận (0)

Đăng nhập để có thể bình luận

Chưa có bình luận nào. Bạn hãy là người đầu tiên cho tôi biết ý kiến!