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

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

18.11.2011, 01:17. Показов 1455. Ответов 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 просмотров)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2011, 01:17
Ответы с готовыми решениями:

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

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

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

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

1
 Аватар для Alex77755
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2011, 02:18
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Создание макробота, как способа экономии времени и варианта ИИ.
Hrethgir 28.01.2025
Чисто теоретически, создание ИИ на ПК можно разделить на части. Создать бота отвечающего за железо (эмулирование вкл, выкл, мышь, клавиатура), другой бот осуществляет распознавание изображений,. . .
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru