Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод кода из Си в VB, Котовый код 
:(
    Опции темы
SIMarOK
Дата 23.12.2004, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 25.10.2004

Репутация: нет
Всего: нет



изменил как вы и сказали, теперь следующее:
вылетает ошибка Sub or Function not defined
и указвыает на строку Call sr(a(i%)) выделяя при этом а.

Код

Function b() As Single
Public a(i) As Single
Label2.Visible = True
Label2.Caption = "Èñõîäíûé ìàññèâ:"
For i% = 0 To 21
a(i%) = Val(InputBox("a(i%)=", "a(i%)"))
Label2.Caption = "Èñõîäíûé ìàññèâ:"
Label2.Caption = Str(a(i%))
Next i%
End Function

Function sr(y As Single) As Single
Public a(i) As Single
Sum = 0
kol = 0
For i% = 0 To 21 Step 1
If a(i%) > 0 Then
Sum = Sum + a(i%)
kol = kol + 1
Next i%
sr = Sum / kol
End Function

Private Sub Preob(a As Single, g As Single, pp As Single)
Public a(i) As Single
newmas = 0
Max = newmas
ss = 0
k = 0
Label1.Visible = True
Label1.Caption = "Poluchenniy massiv:"
If pp > g Then
For i% = 0 To 21 Step 1
If a(i%) > 0 Then
newmas = a(i%) - g
k = k + 1
ElseIf a(i%) <> 0 Then
newmas = a(i%) + g
k = k + 1
Label1.Caption = "newmas="
Label1.Caption = Str(newmas)  'xz
If newmas > Max Then
Max = newmas
ss = k - 1
Next i%
Label1.Caption = "Nomer Maksimuma"
Label1.Caption = Str(ss)
Else
Call MsgBox("Ñðåäíåå ìåíüøå äàííîãî, îñòàíîâêà ïðîãðàììû", vbOKOnly, "Îøèáêà")
End Sub

Private Sub Command1_Click()
g = Val(InputBox("g=", "g", "10"))
Call b
Call sr(a(i%))
Call Preob(a, g, pp)

End Sub

PM MAIL   Вверх
Akina
Дата 23.12.2004, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Я вообще не понимаю как он у тебя живет в этой каше.
Почитай что-нить про определение переменных и область их видимости.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SIMarOK
Дата 23.12.2004, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 25.10.2004

Репутация: нет
Всего: нет



я и говорю что программа не работала и не работает...в связи с чем прошу помочь ее оптимизировать...
PM MAIL   Вверх
boevik
Дата 23.12.2004, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Тут не оптимизировать надо, тут надо переписывать заново.
Для начало, сделай, то что Akina написал.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 23.12.2004, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



1. Достаточно задекларировать массив один раз. Размер его известен. Написать на самом верху:
Код

Private a(21) As Single

2. Делай сдвиги в коде. Такой код читать невозможно.
3. Соблюдай простые правила такие как: сколько if столько и if end и т.д.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
_Serj_
Дата 24.12.2004, 04:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

Option Explicit

Private Const SET_DIG = 2
Private Const MAX_ELEM = 20

Sub main()
Dim sngAver As Single
Dim arr(0 To MAX_ELEM) As Single

 Call InitArray(arr)
 
 sngAver = Average(arr)
 Debug.Print "___Cр. арифм. для положительных элементов = " & sngAver
 
 Call Transform(arr, sngAver)

End Sub


Sub InitArray(arr() As Single)
Dim i As Integer, ipos As Integer
Dim tmp As Single

For i = 0 To MAX_ELEM
   arr(i) = i
Next i
 
Debug.Print "___Начальный массив___"

Randomize
For i = UBound(arr) To LBound(arr) Step -1
   ipos = Int((i - LBound(arr) + 1) * Rnd + LBound(arr))
   tmp = arr(ipos)
   arr(ipos) = arr(i)
   arr(i) = tmp
   Debug.Print "arr[" & i & "]" & " = " & arr(i)
Next i

End Sub

Function Average(mas() As Single) As Single
Dim sum As Single, i As Integer

For i = 0 To MAX_ELEM
  If mas(i) > 0 Then sum = sum + mas(i)
Next i
Average = Round(sum / i, 1)
End Function

Sub Transform(mas() As Single, ByVal aver As Single)
Dim masB As Single, max As Single
Dim ss As Integer, i As Integer

If aver > SET_DIG Then

 Debug.Print "___Получим новый массив___"
 
 For i = 0 To MAX_ELEM
 
      If mas(i) > 0 Then
         masB = mas(i) - SET_DIG
      ElseIf mas(i) <> 0 Then
         masB = mas(i) + SET_DIG
      End If
     
      Debug.Print "arr[" & i & "]" & " = " & masB
     
      If masB > max Then
         max = masB
         ss = i
      End If
     
  Next i
 
  Debug.Print "___Max значение в arr[" & ss & "] = " & max
 
Else

 Debug.Print "\nSrednee menshe dannogo 4isla. STOP"

End If

End Sub


См. в Immediate Window
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.