Решение задач с помощью задания формул и создания макросов
Решение задач с помощью задания формул и создания макросов
10 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского» Экономический факультет Кафедра Экономической информатики Отчёт по дисциплине «Информационные технологии» Работу выполнила студентка 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 m = 4 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 'najti dlinu vektora 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
|