PDA

View Full Version : Về VB-giúp em với



blueheart092
06-12-2010, 20:55
Tình hình là em vừa học về VBA trong excel,còn lơ mơ quá.có bài tập này em làm chưa ra,bị lỗi #VALUE!,các pro coi rồi sửa giúp em.Cám ơn nhiều
Đề:Nhập số nguyên N(0<N<99,N không thỏa thì xuất không tính)tính và trả về giá trị Z=Y+S
Khi N>=16 Y=sin(N)+log(N)
5<N<16 Y= cos(N)-(N^2+N-8)
N<=5 Y=Abs(e^N +N^4)
S=1-3+5-7+...+(2*N-1)
Làm tròn Y đến 3 số lẻ
Code em làm:
Public Function TinhZ(N As Integer) As Double
Dim Z, Y, S, S1, S2, i
If N <= 0 Then
TinhZ = "khong tinh"
End If
If N >= 100 Then
TinhZ = "khong tinh"
End If
If N >= 16 Then
Y = Sin(N) + Log(N)
End If
If 5 < N < 16 Then
Y = Cos(N) - (N ^ 2 + N - 8)
End If
If N <= 5 Then
Y = Abs(e ^ N + N ^ 4)
End If
S1 = 0
For i = 1 To (N - 1) Step 4
S1 = S1 + i
Next i
S2 = 0
For i = -3 To N Step -4
S2 = S2 + i
Next i
S = S1 + S2
Z = Round(Y, 3) + S
TinhZ = "ket qua la:" & Z
End Function

zxcongducxz
21-12-2010, 11:44
VBA là gì mình hok bik, mình chỉ biết VB.Net với C#.Net thôi, hy vọng cái này giúp đc :)) Tuy mình hok hiểu đề cho lắm ha' ha'
Dim N%, Z%, Y%, S%, KQ$
If (0 < N And N < 99) Then

'Tính Y
Select Case (N)
Case Is <= 5
Y = Math.Abs(Math.E ^ N + N ^ 4)
Case Is < 16
Y = Math.Cos(N) - (N ^ 2 + N - 8)
Case Is >= 16
Y = Math.Sin(N) + Math.Log(N)
End Select
'Tính S

For i As Int16 = 0 To 2 * N - 1
If (i Mod 2 <> 0) Then
If (i Mod 4 = 1) Then
S += i
ElseIf (i Mod 4 = 3) Then
S -= i
End If
End If
Next

'Tính Z=Y+S
Z = Math.Round(Y, 3) + S
KQ = Z.ToString()

Else 'Khi 0<N<99 sai
KQ = "Khong tinh"
End If

'Xuat Ket Qua
MessageBox.Show(KQ)

thanhdanhsoft
21-12-2010, 13:16
Tình hình là em vừa học về VBA trong excel,còn lơ mơ quá.có bài tập này em làm chưa ra,bị lỗi #VALUE!,các pro coi rồi sửa giúp em.Cám ơn nhiều
Đề:Nhập số nguyên N(0<N<99,N không thỏa thì xuất không tính)tính và trả về giá trị Z=Y+S
Khi N>=16 Y=sin(N)+log(N)
5<N<16 Y= cos(N)-(N^2+N-8)
N<=5 Y=Abs(e^N +N^4)
S=1-3+5-7+...+(2*N-1)
Làm tròn Y đến 3 số lẻ
Code em làm:
Public Function TinhZ(N As Integer) As Double
Dim Z, Y, S, S1, S2, i
If N <= 0 Then
TinhZ = "khong tinh"
End If
If N >= 100 Then
TinhZ = "khong tinh"
End If
If N >= 16 Then
Y = Sin(N) + Log(N)
End If
If 5 < N < 16 Then
Y = Cos(N) - (N ^ 2 + N - 8)
End If
If N <= 5 Then
Y = Abs(e ^ N + N ^ 4)
End If
S1 = 0
For i = 1 To (N - 1) Step 4
S1 = S1 + i
Next i
S2 = 0
For i = -3 To N Step -4
S2 = S2 + i
Next i
S = S1 + S2
Z = Round(Y, 3) + S
TinhZ = "ket qua la:" & Z
End Function

Bạn xem lại, phải khai báo kiểu dữ liệu cho các biến trước
Và đầu tiền khởi tạo sét cho các biến=0 hết trước.
Chú ý các số được chia không được=0
Lúc trước mình làm nhiều cái này.Hiện tại máy ko cài VB6 nên ko giúp bạn xem chính xác lỗi gì.Nhìn code ko mỏi mắt quá.