Плеханова Юлия. Результаты контрольной по VBA.
вернуться на главную страницу можно, воспользовавшись ссылкой.
Оценка 5,3 балла (0,9+0,4+0,9+0,8+0,9+0,5+0,9).
Задание 1.
Юля, типы переменных и функции могла бы и описать. Хотя это многие не сделали, соответственно, у всех, кто не сделал снято 10% (или в данном случае, 0,1 балла).
0,9
Public Function Fun1(x)
If x < -3 Then
Fun1 = 2 * (x ^ 0.5)
ElseIf x >= -3 And x <= 7 Then
Fun1 = (3 * x) / (5 * x + 3)
ElseIf x > 7 Then
Fun1 = (4 * x + 5) / (x ^ 2 + 1)
End If
End Function
Задание 2.
Юля, увы, но речь шла об "удвоенной сумме неотрицательных чисел"… Про типы я уже не говорю.
0,4
Public Function Fun2(a, b, c)
If a >= 0 And b >= 0 Or b >= 0 And c >= 0 Or a >= 0 And c >= 0 Then
Fun2 = "Введите хотя бы 2 отрицательных числа"
ElseIf a >= 0 Then
Fun2 = b * c
ElseIf b >= 0 Then
Fun2 = a * c
ElseIf c >= 0 Then
Fun2 = a * b
Else
Fun2 = a * b * c
End If
End Function
Задание 3.
См. п.1
0,9
Public Function Fun3()
s = 0
For i = 12 To 40 Step 2
s = s + i * (80 - i)
Next i
End Function
Задание 4.
Юля, входная переменная – только одно число n. А у тебя еще и с почему-то. И способ поиска и суммирования какой-то нетрадиционный, хотя как бы работающий даже.
0,8
Public Function Fun4(ByVal n, c As Integer)
s = 0
While n <> 0
c = n Mod 10
n = n \ 10
If c Mod 5 = 0 Then
c = 0
End If
s = s + c
Wend
End Function
Задание 5.
Рекомендации на будущее - лучше и начинать со строк, то есть с Rows, и присваивать их количество переменной n, - устоялось как то так. Соответственно, первый индекс – номер строки - будет от I до n. Ну и типы переменных.
0,9
Public Function Fun5(a As Variant)
n = Columns.Count
m = Rows.Count
p = 1
For i = 1 To m
For j = 1 To n
If a(i, j) < 0 Then
p = p * a(i, j)
End If
Next j
Next i
Fun5 = p
End Function
Задание 7.
Нарисовать форму – это вариант показать, что ты что-то умеешь, но не более..
0,5
Задание 8.
Знаешь, почему не работало? Потому что такое написание программы предполагает, что во первых сработает оно только тогда, когда максимум будет больше 1, а минимум меньше, что как ты понимаешь, не всегда верно – надо было и тому и другому присвоить значение перового элемента массива, и в добавок, еще и сохранить его индексы до цикла: imin = 1: jmin = 1 : imax = 1: jmax = 1. Ну а потом – в самом конце - еще и обратную операцию сделать для той которая в самом начале проделана – Selection=a. Ну и твою последнюю строчку - a(imin, imax) = t – надо было правильно написать - a(imin, imin) = t
0,9
Public Sub Sub8()
a = Selection.Value
m = UBound(a, 1)
n = UBound(a, 2)
Max = 1
Min = 1
For i = 1 To m
For j = 1 To n
If a(i, j) < Min Then
Min = a(i, j): imin = i: jmin = j
End If
If a(i, j) > Max Then
Max = a(i, j): imax = i: jmax = j
End If
Next j
Next i
t = a(imax, jmax)
a(imax, jmax) = a(imin, imax)
a(imin, imax) = t
End Sub
|