Решение задач с помощью задания формул и создания макросов
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО
ОБРАЗОВАНИЮ
Государственное
образовательное учреждение высшего профессионального образования
«Нижегородский
государственный университет им. Н.И. Лобачевского»
Экономический факультет
Кафедра Экономической
информатики
Отчёт
по дисциплине
«Информационные технологии»
Работу выполнила студентка
729 группы д/о
Кудреватых Валерия Евгеньевна
Нижний Новгород 2009
Задача 1
Просуммировать
элементы столбцов заданной матрицы размером mхn. Результат получить в
одномерном массиве размером n.
Способ 1.
Решим данную задачу с помощью задания формул и создания макросов.
Sub
МакросМассив()
'
МакросМассив Макрос
' Макрос
записан 07.07.2009 (Gddess)
Range("A1").Select
ActiveCell.FormulaR1C1
= "=INT(10*RAND()-2)"
Range("A1").Select
Selection.AutoFill
Destination:=Range("A1:C1"), Type:=xlFillDefault
Range("A1:C1").Select
Selection.AutoFill
Destination:=Range("A1:C4"), Type:=xlFillDefault
Range("A1:C4").Select
Range("E1").Select
ActiveCell.FormulaR1C1
= "=SUM(RC[-4]:R[3]C[-4])"
Range("F1").Select
ActiveCell.FormulaR1C1
= "=SUM(RC[-4]:R[3]C[-4])"
Range("G1").Select
ActiveCell.FormulaR1C1
= "=SUM(RC[-4]:R[3]C[-4])"
End Sub
Способ 2.
Private Sub CommandButton1_Click()
Set List =
Worksheets("Лист1")
Dim str As
String ‘ объявление массива
n = 9
‘количество столбцов
m = 4 ‘количество
строк
ReDim A(1 To
n, 1 To m) ‘указание размерности
For i = 1 To
n
For j = 1 To
m
A(i, j) =
Int(Rnd * 10)
Cells(i + 1,
j) = A(i, j)
Next j
Next i
ReDim b(1 To
m)
For j = 1 To
m
For i = 1 To
n
Sum = Sum +
A(i, j)
Next i
b(j) = Sum
Sum = 0
Next j
str = "
"
For j = 1 To
m
str = str +
CStr(Format(b(j), "Fixed")) + " "
Cells(i, j +
5) = b(j)
Next
End Sub
Private Sub
CommandButton3_Click()
Unload Me
End Sub
Способ 3.
Решим задачу
с использованием форм.
Private Sub
CommandButton1_Click()
Dim str As
String
n = 3
ReDim A(1 To
n, 1 To m)
ReDim b(1 To
m)
For i = 1 To
n
For j = 1 To
m
A(i, j) =
Int((10 * Rnd) - 5)
Next j
Next i
str = "
"
For i = 1 To
n
For j = 1 To
m
str = str +
CStr(Format(A(i, j), "Fixed")) + " "
Next
Next
'Выведем
результат
UserForm1.Label4.Caption = str
For j = 1 To
m
For i = 1 To
n
Sum = Sum +
A(i, j)
Next i
b(j) = Sum
Sum = 0
Next j
str = "
"
For j = 1 To
m
str = str +
CStr(Format(b(j), "Fixed")) + " "
Next
UserForm1.Label3.Caption
= str
End Sub
Private Sub
CommandButton2_Click()
Unload Me
End Sub
Задача 2
Нормировать вектор и найти его длину. Формула
Способ 1.
Решим данную задачу с помощью задания формул и создания макросов.
Sub Макрос1()
'' Макрос1
Макрос
' Макрос
записан 06.12.2009 '
Range("A1").Select
ActiveCell.FormulaR1C1
= "=INT(10*слчис()-4)"
Range("A1").Select
ActiveCell.FormulaR1C1
= "=INT(10*RAND()-2)"
Selection.AutoFill
Destination:=Range("A1:E1"), Type:=xlFillDefault
Range("A1:E1").Select
ActiveCell.FormulaR1C1
= _
"=SQRT(R[-1]C^2+R[-1]C[1]^2+R[-1]C[2]^2+R[-1]C[3]^2+R[-1]C[4]^2)"
Range("A3").Select
ActiveCell.FormulaR1C1
= "=R[-2]C/R[-1]C"
Selection.AutoFill
Destination:=Range("A3:E3"), Type:=xlFillDefault
Range("A3:E3").Select
Range("A3").Select
ActiveCell.FormulaR1C1
= "=R[-2]C/R[-1]C1"
Selection.AutoFill
Destination:=Range("A3:E3"), Type:=xlFillDefault
Range("A3:E3").Select
Range("E3").Select
End Sub
Способ 2
Private Sub
CommandButton1_Click()
Set List =
Worksheets("Лист2")
n =
List.Cells(1, 2)
Dim Str As
String
ReDim a(1 To
n) ‘ указание размерности
ReDim c(1 To
n) ‘указание размерности
For i = 1 To
n
a(i) =
Int((10 * Rnd) - 5)
List.Cells(2,
i + 1) = a(i)
Next i
Sum = 0
For i = 1 To
n
Sum = Sum +
a(i) ^ 2
Next i
a1 = Sqr(Sum)
'Выведем
результат
List.Cells(3,
2) = a1
For i = 1 To
n
c(i) = a(i) /
a1
List.Cells(4,
i + 1) = c(i)
Next i
End Sub
Способ 3
Решим задачу
с использованием форм.
Private
Sub CommandButton1_Click()
n =
UserForm2.TextBox6
Dim Str As
String
ReDim a(1 To
n)
ReDim C(1 To
n)
For i = 1 To
n
a(i) =
Int((10 * Rnd) - 5)
Str = Str +
CStr(a(i)) + " "
Next i
'Выведем в
форму в строчку
UserForm2.Label4.Caption
= Str
'najti dlinu
vektora
Sum = 0
For i = 1 To
n
Sum = Sum +
a(i) ^ 2
Next i
a1 = Sqr(Sum)
'Выведем
результат
UserForm2.Label2.Caption
= Format(a1, "##.###")
Str =
""
For i = 1 To
n
C(i) = a(i) /
a1
Str = Str +
CStr(Format(C(i), "Fixed")) + " "
Next i
UserForm2.Label3.Caption
= Str
End Sub
Private Sub
CommandButton2_Click()
For i = 1 To
n
C(i) = a(i) /
a1
Next i
UserForm2.Label3.Caption
= C(i)
End Sub
Private Sub
CommandButton3_Click()
Unload Me
End Sub