Em chào các thành viên trong diễn đàn.
Em có 1 bài toán như sau mong muốn a/c cho em giải pháp ạ:
Nhập vào các số A, B, C.
Tìm tập D={d1, d2, ..., dn} sao cho:
1) các phần tử trong D đều chia hết A
2) d(n) <= B
3) C là giới hạn làm tròn nếu:
1. C thuộc tập từ 0,1 đến 0,9 thì lấy giá trị D có 1 số thập phân hoặc D là số nguyên.
2. C thuộc tập từ 0,11 đến 0,99 thì lấy giá trị D có 2 số thập phân hoặc D là số nguyên.
Ví dụ 1: A=0.05; B=20; C = 0.5 => D={0, 0.5, 1, ..., 20}
Ví dụ 1: A=0.05; B=20; C = 0.25 => D={0, 0.25, 0.5, ..., 20}
Ví dụ 2: A=0.09; B=91; C= 0.5 => D={0, 4.5, 9, 13.5, ..., 90}
Ví dụ 3: A= 0.1; B=105; C = 5 => D={0, 5, 10, 15, ..., 105}
Ý tưởng giải quyết vấn đề:
Rất mong được anh chị sửa lỗi trong code và cho em biết liệu giải pháp này đã tối ưu nhất chưa ạ, nếu chưa, xin cho em một giải pháp khác.
Em cảm ơn!
Em có 1 bài toán như sau mong muốn a/c cho em giải pháp ạ:
Nhập vào các số A, B, C.
Tìm tập D={d1, d2, ..., dn} sao cho:
1) các phần tử trong D đều chia hết A
2) d(n) <= B
3) C là giới hạn làm tròn nếu:
1. C thuộc tập từ 0,1 đến 0,9 thì lấy giá trị D có 1 số thập phân hoặc D là số nguyên.
2. C thuộc tập từ 0,11 đến 0,99 thì lấy giá trị D có 2 số thập phân hoặc D là số nguyên.
Ví dụ 1: A=0.05; B=20; C = 0.5 => D={0, 0.5, 1, ..., 20}
Ví dụ 1: A=0.05; B=20; C = 0.25 => D={0, 0.25, 0.5, ..., 20}
Ví dụ 2: A=0.09; B=91; C= 0.5 => D={0, 4.5, 9, 13.5, ..., 90}
Ví dụ 3: A= 0.1; B=105; C = 5 => D={0, 5, 10, 15, ..., 105}
Ý tưởng giải quyết vấn đề:
PHP:
Sub Button1_Click()
Dim a, b, c, i, j
Dim AcSh1 As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
i = 0: j = 0
a = InputBox("Nhap boi so")
b = InputBox("Nhap gioi han tich cua boi so a")
c = InputBox("Nhap gioi han tich lam tron ket qua")
Set AcSh1 = ActiveSheet
If AcSh1.Cells(4, "A").End(xlDown).Row = AcSh1.Rows.Count Or AcSh1.Cells(5, "A").End(xlDown).Row = AcSh1.Rows.Count Then
AcSh1.Range("A4:B" & AcSh1.Rows.Count).Clear
ElseIf AcSh1.Cells(AcSh1.Rows.Count, "A").End(xlUp).Row Then
AcSh1.Range("A4:B" & AcSh1.Cells(AcSh1.Rows.Count, "A").End(xlUp).Row).Clear
End If
AcSh1.Cells(4, "A") = a
AcSh1.Cells(4, "B") = b
AcSh1.Cells(4, "C") = c
Do While (c * i) <= b
If (c * i) Mod a = 0 Then
AcSh1.Cells(5 + j, "A") = c * i
j = j + 1
End If
i = i + 1
Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Rất mong được anh chị sửa lỗi trong code và cho em biết liệu giải pháp này đã tối ưu nhất chưa ạ, nếu chưa, xin cho em một giải pháp khác.
Em cảm ơn!
Lần chỉnh sửa cuối: