Câu hỏi:

13/07/2024 399

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.

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

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’)

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

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