Решение задач с помощью задания формул и создания макросов

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

«Нижегородский государственный университет им. Н.И. Лобачевского»

Экономический факультет

Кафедра Экономической информатики

Отчёт

по дисциплине «Информационные технологии»

Работу выполнила студентка

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>