Connected by... logo
  Главная
Market Connected by Velcom Connected by МТС Connected by БелСел Connected by Белтелеком Оборудование  

Тортиков Алексей. Результаты контрольной по 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