Code không chạy mong giúp đỡ

Liên hệ QC
Status
Không mở trả lời sau này.

nguyenkimngoc

Thành viên hoạt động
Tham gia
4/8/08
Bài viết
113
Được thích
7
Em có gõ lại code sau nhưng lệnh cứ báo lỗi, mong Anh chị giúp đỡ

Cám ơn Anh chị

Function hocluc(toan As Single, ly As Single, hoa As Single, Diemtb As Single)

Select Case Diemtb
Case Is >= 8.5
If toan >= 7 And ly >= 7 And hoa >= 7 Then hocluc = "gioi"
ElseIf toan < 7 Or ly < 7 Or hoa < 7 Then hocluc = "kha"
End If
Case Is >= 6.5
If toan >= 5.5 And ly >= 5.5 And hoa >= 5.5 Then hocluc = "kha"
ElseIf toan < 5.5 Or ly < 5.5 Or hoa < 5.5 Then hocluc = "tb"
End If
Case Is >= 5
If toan >= 4 And ly >= 4 And hoa >= 4 Then hocluc = "trung binh"
ElseIf toan < 4 Or ly < 4 Or hoa < 4 Then hocluc = "yeu"
End If
Case Is < 5
hocluc = "yeu"
End Select

End Function
 
Em có gõ lại code sau nhưng lệnh cứ báo lỗi, mong Anh chị giúp đỡ

Cám ơn Anh chị

Function hocluc(toan As Single, ly As Single, hoa As Single, Diemtb As Single)

Select Case Diemtb
Case Is >= 8.5
If toan >= 7 And ly >= 7 And hoa >= 7 Then hocluc = "gioi"
ElseIf toan < 7 Or ly < 7 Or hoa < 7 Then hocluc = "kha"
End If
Case Is >= 6.5
If toan >= 5.5 And ly >= 5.5 And hoa >= 5.5 Then hocluc = "kha"
ElseIf toan < 5.5 Or ly < 5.5 Or hoa < 5.5 Then hocluc = "tb"
End If
Case Is >= 5
If toan >= 4 And ly >= 4 And hoa >= 4 Then hocluc = "trung binh"
ElseIf toan < 4 Or ly < 4 Or hoa < 4 Then hocluc = "yeu"
End If
Case Is < 5
hocluc = "yeu"
End Select

End Function
Bạn học ở đâu kiểu viết này:
If toan >= 7 And ly >= 7 And hoa >= 7 Then hocluc = "gioi"
ElseIf toan < 7 Or ly < 7 Or hoa < 7 Then hocluc = "kha"
End If

Phải viết lại cho rõ như vầy:
PHP:
Function hocluc(toan As Double, ly As Double, hoa As Double, Diemtb As Double) As String
Select Case Diemtb
    Case Is >= 8.5
        If toan >= 7 And ly >= 7 And hoa >= 7 Then
            hocluc = "gioi"
        ElseIf toan < 7 Or ly < 7 Or hoa < 7 Then
            hocluc = "kha"
        End If
    Case Is >= 6.5
        If toan >= 5.5 And ly >= 5.5 And hoa >= 5.5 Then
            hocluc = "kha"
        ElseIf toan < 5.5 Or ly < 5.5 Or hoa < 5.5 Then
            hocluc = "tb"
        End If
    Case Is >= 5
        If toan >= 4 And ly >= 4 And hoa >= 4 Then
            hocluc = "trung binh"
        ElseIf toan < 4 Or ly < 4 Or hoa < 4 Then
            hocluc = "yeu"
        End If
    Case Is < 5
        hocluc = "yeu"
    End Select
End Function
Hoặc rút gọn lại:
PHP:
Function hocluc(toan As Double, ly As Double, hoa As Double, Diemtb As Double) As String
Select Case Diemtb
    Case Is >= 8.5
        If toan >= 7 And ly >= 7 And hoa >= 7 Then
            hocluc = "gioi"
        Else
            hocluc = "kha"
        End If
    Case Is >= 6.5
        If toan >= 5.5 And ly >= 5.5 And hoa >= 5.5 Then
            hocluc = "kha"
        Else
            hocluc = "tb"
        End If
    Case Is >= 5
        If toan >= 4 And ly >= 4 And hoa >= 4 Then
            hocluc = "trung binh"
        Else
            hocluc = "yeu it"
        End If
    Case Is < 5
        hocluc = "yeu nhieu"
    End Select
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Bài biếc gì mà lô gic loạn xạ lên hết:
1. "tb" khác với "trung binh"
2. đã test If toan >= 7 And ly >= 7 And hoa >= 7
thì else đương nhiên là toan < 7 Or ly < 7 Or hoa < 7, cần gì phải test elseif

Mà bài này rõ ràng là công việc của if-then-else, lại làm thành Select Case
 
Upvote 0
Bài này là bài tập, phải hôn? Tôi giải thích luôn cho dễ học.
Hàm được thiết kế với điều kiện không rõ rệt.
1. Điểm trung bình là gì? Nếu nó là trung bình của 3 điểm kia thì thực sự có thể tính ra, đâu cần nhập. Nhưng nếu thực ra có môn thứ 4, 5... chỉ tính trung bình chứ không xét thì phải cần nhập
2. Ba môn điểm được đánh giá in hệt nhau, trên nguyên tắc thì tham số đặt là diem1, diem2, diem3; chứ đặt toan, ly, hoa nó không được "chuyên nghiệp/professional"

Mã:
Function HocLuc(byVal diem1, byVal diem2, byVal diem3, optional byVal diemTB = -1) As String
' hàm xét học lực dựa trên điểm trung bình và 3 môn chính
' nếu chỉ có 3 môn thì chỉ nạp 3 điểm, hàm tự tính trung bình
' nếu có nhiều môn thì nạp thêm điểm trung bình
If diemTB < 0 Then diemTB = (diem1 + diem2 + diem3) / 3
If diemTB >= 8.5 Then
  HocLuc = IIf(diem1 < 7 Or diem2 < 7 Or diem3 < 7, "Kha", "Gioi")
ElseIf diemTB >= 6.5 Then
  HocLuc = IIf(diem1 < 5.5 Or diem2 < 5.5 Or diem3 < 5.5, "Trung Binh", "Kha")
ElseIf diemTB > 5 Then
  'HocLuc = IIf(diem1 < 4 Or diem2 < 4 Or diem3 < 4, "Yeu", "Trung Binh")
Else
  HocLuc = "Yeu"
End If
End Function

Chú thích: nếu dùng Select Case thì cái Case Is < 5 không cần nêu ra bởi vì trước nó đã có Case Is >= 5. Chỉ dùng Case Else là được rồi.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

Bài viết mới nhất

Back
Top Bottom