Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
солнце2011
1

Программа для построения информационных сетей для математических моделей

18.11.2011, 01:17. Показов 1447. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, всем! Помогите кто может. Есть такая задача: Требуется построить информационную сеть для 5 факторов на 5 уровнях варьирования. Использовать нужно среду Excel язык VBA.
Есть программа. но она не работает. показывает ошибки. я не понимаю, как их исправить.
Текст программы (с пояснениями из книги):

Запуск окна ввода исходных данных
Visual Basic
1
2
3
4
5
6
7
Sub Start() 
  UserForm1.Show 1 
  NF = UserForm1.n 
  SV = UserForm1.s 
  F = UserForm1.Factors 
  Nopt = UserForm1.Nopt 
End Sub
Сложение двух чисел по модулю S - количество уровней варьирования
Visual Basic
1
2
3
4
5
6
7
8
9
Function SumN(a As Integer, b As Integer, M As Integer, ByRef s 
As Integer, ByRef p As Integer) 
 s = a + b 
 p = 0 
 If s >= M Then 
  p = Int(s / M) 
  s = s - M 
 End If 
End Function
Здесь переменные s и p возвращают сумму a и b, а р – перенос в
старший разряд
Умножение по модулю N без переноса в старший разряд
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
Function  MultN(a  As  Integer,  b  As  Integer,  M  As  Integer)  As 
Integer 
 s = a * b 
 If s >= M Then 
  p = Int(s / M) 
  s = s - M 
 End If 
 MultN = s 
End Function 
Вывод построенной информационной сети 
Вычисление количества факторов и количество необходимых опытов. 
 n = Val(TextBox1.Text) 
 s = Val(TextBox2.Text) 
 F = (s ^ n - 1) / (s - 1) 
 Nopt = s ^ n 
 Factors = F 
Составление групп координат вершин связок плоскостей на бесконечности 
For i = 1 To n 
   V(1, i) = 0 'обнуление первой строки таблицы 
 Next 
 V(1, n) = 1 'начальное значение младшего разряда 
 p = n 'значение номера первого ненулевого разряда 
 k = 2 
 Vp(1) = 1 'первая вершина фундаментального симплекса 
 For i = 2 To F 
   For j = 1 To n 
      V(i, j) = V(i - 1, j) 'копия пред. строки 
   Next 
    
    SumN V(i - 1, n), 1, s, x, y 'прибавление 1 по модулю s 
    V(i, n) = x 
    j = n - 1 
    While y > 0 And j >= 0 'перенос в старший разряд если сумма 
>s 
      SumN V(i, j), y, s, x, y 
      V(i, j) = x 
      j = j - 1 
    Wend 
    'порверка если первая ненулевая координата > 1 
    'тогда осуществляем перенос в старший разряд по модулю 2 
    If V(i, p) > 1 Then 
      V(i, p) = 0 
      j = p - 1 
      y = 1 
      Vp(k)  =  i  'запоминаем  номер  вершины  фундаментального 
симплекса 
      k = k + 1 
      While y > 0 And j >= 0 
        SumN V(i, j), y, s, x, y 
        V(i, j) = x 
        p = j 
        j = j - 1 
      Wend 
    End If 
 Next 
Процедура построения ортогональной таблицы 
'сортируем вершины фунд. симплекса в порядке убывания 
 For i = 1 To n 
   For j = 1 To n 
     T = V(i, j) 
     V(i, j) = V(Vp(i), j) 
     V(Vp(i), j) = T 
   Next j 
 Next 
 Dim Vt() As Integer 
 ReDim Vt(1 To n, 1 To n) 
 For i = n To 1 Step -1 
  For j = 1 To n 
    Vt((n + 1) - i, j) = V(i, j) 
  Next j 
 Next i 
 For i = 1 To n 
  For j = 1 To n 
    V(i, j) = Vt(i, j) 
  Next j 
 Next i 
 
 Dim st As String 
 'заполнение таблицы 
 Dim Info() As Integer 
 ReDim Info(1 To Nopt, 1 To F) 
 For i = 1 To n 
   Info(1, i) = 0 ' заполняем первую строку 0 
 Next 
 'заполнение первых n-столбцов таблицы 
 For i = 2 To Nopt 
   SumN Info(i - 1, n), 1, s, x, y 
   Info(i, n) = x 
   For j = n - 1 To 1 Step -1 
     SumN Info(i - 1, j), y, s, Sum, y 
     Info(i, j) = Sum 
   Next j 
 Next i 
 Dim mult As Integer 
 For i = 1 To Nopt 
   For j = n + 1 To F 
     Sum = 0 
     For k = 1 To n 
       mult = MultN(Info(i, k), V(j, k), s) 
       SumN mult, Sum, s, Sum, p 
     Next 
     Info(i, j) = Sum 
   Next j 
 Next i 
 'вывод результата 
 Dim ws As Worksheet 
 Set  ws  = 
ActiveWorkbook.Sheets.Add(Before:=Worksheets(Worksheets.Count)) 
 ws.Activate 
 Set Me.OutWorkSheet = ws 
 For i = 1 To Nopt 
    ActiveSheet.Cells(i + 1, 1) = i 
 Next 
 'вывод линейно-независимых векторов 
 For i = 1 To F 
  st = "" 
  For j = 1 To n 
    st = st + Str(V(i, j)) 
    If j < n Then st = st + " " 
  Next 
  ActiveSheet.Cells(1, i + 1) = st 
  ActiveSheet.Cells(1, i + 1).Font.Bold = True 
 Next 
 'вывод ортогональной таблицы 
 For i = 1 To Nopt 
  For j = 1 To F 
    ActiveSheet.Cells(i + 1, j + 1) = Info(i, j) 
    ActiveSheet.Cells(1, i + 1).Font.Name = "Tahoma" 
    ActiveSheet.Cells(1, i + 1).Font.Bold = False 
    ActiveSheet.Cells(1, i + 1).Font.Size = 9 
  Next j 
 Next i 
 Hide 
End Sub 
Процедура построения информационной сети 
Sub ИнформационнаяСеть() 
    Dim R As Range 
    Set  R  =  Application.InputBox("Укажите  диапазон  со 
значениями факторов по уровням варьирования", _ 
    , , , , , , 8) 
    If SV <> R.Rows.Count Then 
      MsgBox  "Неверно  указано  количество  уровней  варьирования, 
должно быть " & SV, vbCritical 
      Exit Sub 
    End If 
    MsgBox  "Вы  выбрали  "  &  R.Columns.Count  &  " факторов и " & 
R.Rows.Count & " уровней варьирования" 
    Dim SF() As Single 
    F = R.Columns.Count 
    ReDim SF(1 To R.Rows.Count, 1 To R.Columns.Count) 
    For i = 1 To R.Rows.Count 
      For j = 1 To R.Columns.Count 
        SF(i, j) = R(i, j) 
      Next j 
    Next i 
    UserForm1.OutWorkSheet.Activate 
     
    Dim Info() As Single 
    ReDim Info(1 To Nopt, 1 To F) 
     
    For i = 1 To R.Columns.Count 
      Set R = Application.InputBox("Укажите столбец для фактора 
№ " & i, , , , , , , 8) 
      R.Font.Bold = True 
      R.Font.Color = RGB(200, 0, 0) 
      For j = 1 To Nopt 
        Info(j, i) = R(j, 1) 
      Next j 
    Next i 
     
    For i = 1 To Nopt 
      For j = 1 To F 
        Info(i, j) = SF(Info(i, j) + 1, j) 
      Next j 
    Next i 
    
    'вывод результат 
    Dim ws As Worksheet 
    Set  ws  = 
ActiveWorkbook.Sheets.Add(Before:=Worksheets(Worksheets.Count)) 
    ws.Activate 
     
    With ActiveSheet 
      .Cells(1, 1) = "Информационная сеть" 
      For i = 1 To Nopt 
        .Cells(i + 1, 1) = i 
        .Cells(i + 1, 1).Font.Bold = True 
        For j = 1 To F 
          .Cells(i + 1, j + 1) = Info(i, j) 
        Next j 
      Next 
    End With 
    
End Sub 
Function SumN(a As Integer, b As Integer, M As Integer, ByRef s 
As Integer, ByRef p As Integer) 
 s = a + b 
 p = 0 
 If s >= M Then 
  p = Int(s / M) 
  s = s - M 
 End If 
End Function 
 
Function  MultN(a  As  Integer,  b  As  Integer,  M  As  Integer)  As 
Integer 
 s = a * b 
 If s >= M Then 
  p = Int(s / M) 
  s = s - M 
 End If 
 MultN = s 
End Function

Ошибки, которые появились (выделились красным):

1. Set ws = ActiveWorkbook.Sheets.Add (Before:=Worksheets (Worksheets.Count)) ws.Activate
2. Set R = Application.InputBox("Укажите диапазон со значениями факторов по уровням варьирования", _ , , , , , , 8)

3. MsgBox "Неверно указано количество уровней варьирования, "должно быть " & SV, vb Critical

4. Set R = Application.InputBox("Укажите столбец для фактора)

А при запуске программы первая строчка желтая.
Вложения
Тип файла: xls VBA.xls (49.5 Кб, 22 просмотров)
Тип файла: doc программа.doc (36.0 Кб, 17 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2011, 01:17
Ответы с готовыми решениями:

Программа для построения сетей
Слышал вроде такие есть.. не схемы рисовать а чтоб мона схематично нарисовать сеть ипы назначить...

Программа для математических расчетов и построения 3D графиков. С чего начать?
Я собираюсь написать программу для сложных математических расчетов с построением 3D поверхностей в...

программа для схематичного построения робота(механизма) различной сложности (Элементы для построения желательно поместить в БД).
доброго времени суток. незнаю куда лучше определить тему, поэтому создал ее тут. препод...

Web-сервис для построения графиков математических функций
Есть тема на диплом - &quot;Создание web-сервиса &quot;Графический редактор для построения графиков...

1
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
18.11.2011, 02:18 2
Visual Basic
1
2
3
4
5
6
 Set ws = ActiveWorkbook.Sheets.Add(Before:=Worksheets(Worksheets.Count))
 ws.Activate
 Set R = Application.InputBox("Укажите диапазон со значениями факторов по уровням варьирования", "", 8)
 
  MsgBox "Неверно указано количество уровней варьирования, должно быть: " & SV, vbCritical, ""
Set R = Application.InputBox("Укажите столбец для фактора", "")
1
18.11.2011, 02:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2011, 02:18
Помогаю со студенческими работами здесь

Какой алгоритм используется в программе для построения графиков математических функций по формуле?
Вот функция из программы для построения графиков математических функций по формуле, которая...

Программа построения коммуникационных сетей минимального значения
Не могу создать схему в delphi должна выглядеть как построение кратчайшего пути , кто поможет...

Программа для математических расчетов
Народ, хочу попросить Вас о следующем. Мне надо написать программу по следующему типу: 1)...

Программа для решения математических действий
Здравствуйте, помогите реализовать программу. Дано натуральное число N. Получить все такие тройки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru