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

Xin gửi tới bạn đọc bài viết 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 để bạn đọc cùng tham khảo và có thêm tài liệu giải sgk Tin 11 Kết nối tri thức. Mời các bạn cùng theo dõi bài viết.

Thông tin:
4 trang 9 tháng trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

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

Xin gửi tới bạn đọc bài viết 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 để bạn đọc cùng tham khảo và có thêm tài liệu giải sgk Tin 11 Kết nối tri thức. Mời các bạn cùng theo dõi bài viết.

38 19 lượt tải Tải xuống
Luyện tập
Câu hỏi 1.Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép
chương trình thể tìm kiếm điểm số trên danh sách điểm được sắp
xếp theo thứ tự giảm dần.
Bài là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]<K:
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
Câu hỏi: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 thông báo tên của
học sinh đ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
Bài làm
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 thông báo tên học sinh đ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 đ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 điểm trong khoảng điểm đã
nhập.")
--------------------------
| 1/4

Preview text:

Luyện tập

Câu hỏi 1. 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.

Bài là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]<K:

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

Câu hỏi: 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

Bài làm

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.")

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