Тортиков Алексей. Результаты контрольной по VBA.
вернуться на главную страницу можно, воспользовавшись ссылкой.
Оценка 3,9 балла (0,9+0,4+0,7+0,9+0,9+0,1).
Задание 1.
Леша, типы здесь не должны быть Variant, за это снята 0,1 балла. А то, что после первого if должно быть не y = 2 ^ 0.5, а у=2*x^0,5 или 2*Sqr(x), я, как бы не заметил.
0,9
Public Function Значение_функции(x)
If x < -3 Then
y = 2 ^ 0.5
End If
If x > 7 Then
y = (4 * x + 5) / (x ^ 2 + 1)
End If
If x >= -3 And x <= 7 Then
y = (3 * x) / (5 * x + 3)
End If
Значение_функции = y
End Function
Задание 2.
Леша, здесь про типы уже как бы и не очень уместно говорить, а также про то, что о – это не 0 (у тебя в нескольких местах именно о вместо нуля написано, что заставляет думать о переписывании со шпоры), а также про то, что речь идет о неотрицательных числах (все-таки для того, чтобы показать свое понимание этого, необходим знак >=, хотя, конечно, допускаю, что ты рассуждал "от противного", то есть хотел исключить из рассмотрения отрицательные). Но вот то, что у тебя что бы не происходило – всегда y = 2 * (A + b + c), - это уже грубая ошибка…Да, я вижу одну ветку где у="", но к чему она – пользователь твоей функции вряд ли поймет.
0,4
2. Разработать функцию пользователя, вычисляющую удвоенную сумму неотрицательных чисел, из трех заданных. (1 балл)
Public Function Удвоенная_сумма(A, b, c)
y = 2 * (A + b + c)
If A < 0 And b < 0 Or A < 0 And c < o Or b < o And c < 0 Or A < 0 And b < 0 And c < 0 Then
If A < 0 And b < 0 Then
y = 2 * (A + b + c)
End If
If A < 0 And c < 0 Then
y = 2 * (A + b + c)
End If
If b < 0 And c < 0 Then
y = 2 * (A + b + c)
End If
If A < 0 And b < 0 And c < 0 Then
y = 2 * (A + b + c)
End If
Else
y = ""
End If
Удвоенная_сумма = y
End Function
Задание 3.
В отношении типов данных все то же самое. В остальном - ход мысли, в общем, правильный, только строка s = s + (A * (68 - A)) – ошибочная, соответственно неправильный и ответ. Сам посуди, первые множители у тебя 12 и 68, соответственно, это у тебя в данном случае А и – 80-A=68, а не 68-A=56 (!)
0,7
3. Разработать функцию пользователя, вычисляющую сумму: 12*68+14*66+16*64...+40*40 (1 балл)
Public Function Сумма()
s = 0
For A = 12 To 40 Step 2
s = s + (A * (68 - A))
Next A
Сумма = s
End Function
Задание 4.
Леша, только одно замечание - и число и сумма его цифр – не Variant. Ну и еще – Double – вещественный (десятичный) тип, а для А вполне хватило бы и целого типа, причем самого "не требовательного" к памяти Byte. Просто потому, что остаток от деления на 10 по определению сам понимаешь какой.
0,9
4. Разработать функцию пользователя, вычисляющую сумму не кратных 5 цифр числа
Public Function Zadanie_4(ByVal n As Variant) As Variant
Dim A As Double
Zadanie_4 = 0
While n <> 0
A = n Mod 10
If A Mod 5 <> 0 Then Zadanie_4 = Zadanie_4 + A
n = n \ 10
Wend
End Function
Задание 5.
Леша, опять же Variant здесь должна быть только переменная А, а не все переменные подряд. Опять же дискуссионный вопрос, но чтобы не путаться в m и n и Rows и Columns, посоветовал бы тебе в дальнейшем придерживаться прямо противоположных обозначений – n – более употребляемая буква, используется для обозначения первой размерности, то есть числа строк – Rows.
0,9
5. Разработать функцию пользователя, вычисляющую произведение отрицательных элементов массива (1 балл)
Public Function ProizvedenieOTR(A)
n = A.Columns.Count
m = A.Rows.Count
Proizvedenie = 1
For i = 1 To m
For j = 1 To n
If A(i, j) < 0 Then
Proizvedenie = Proizvedenie * A(i, j)
End If
Next j
Next i
ProizvedenieOTR = Proizvedenie
End Function
Задание 6.
А вот здесь тебя совершенно неожиданно "клемануло". Причем абсолютно неожиданно, и я даже очень боюсь, что частично экстраполируя то, что я увидел здесь, можно сказать, что и предыдущие задачи ты делал как-то без понимания того, что именно делаешь. Как можно искать количество кратных 7 элементов массива с использованием элементов кода, который был к месту при поиске некратных 5 ЦИФР ЧИСЛА??? При этом заметь, какие-то проблески сознания к тебе возвращались, ты даже переменную А вдруг определил в Double, при том, что ранее ты обращался к ней за количеством ее строк и столбцов. А обращаться надо было бы за количеством строк и столбцов переменной n, она же у тебя входной массив…Вместо этого ты вдруг этому n присваиваешь значение, равное количеству столбцов доселе не встречавшейся переменной А. Но если бы и входная переменная была бы А, все равно бы программа не работала, и если бы строки и столбцы брались для переменной n – тоже не сработала бы – ибо далее – в контексте данной задачи - вообще идет какой-то БРЕД.
0,1
Разработать функцию пользователя, вычисляющую количество кратных 7, положительных элементов массива (1 балл)
Public Function Zadanie_6(ByVal n As Variant) As Variant
If n > 0 Then
n = A.Columns.Count
m = A.Rows.Count
Dim A As Double
Zadanie_6 = 0
While n <> 0
A = n Mod 10
If A Mod 7 <> 0 Then Zadanie_6 = Zadanie_6 + 1
n = n \ 10
Wend
End If
End Function
|