Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему не работает код? Сортировка с заменой / 5 сообщений из 5, страница 1 из 1
11.06.2020, 17:06
    #39968314
Morych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает код? Сортировка с заменой
Помогите пожалуйста!
Требуется написать программу на VBA:

Задан целочисленный массив. Упорядочить по убыванию элементы массива, найти среднее арифметическое нечетных элементов и заменить ими все элементы кратные 3.

P. S. В задании под «массивом» понимается набор ячеек Excel, не менее 20 элементов, расположенных в какой-либо строке.


Код: vbnet
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.
Sub sortCells(row As Long, c1 As Integer, c2 As Integer)
Dim X() As Long
    n% = c2 - c1 + 1
    ReDim X(1 To n%) As Long
    i% = 1
    For c% = c1 To c2
        X(i%) = Cells(row, c).Value
        i% = i + 1
    Next
    For i% = 1 To n% - 1
        For j% = i% + 1 To n%
            If X(i%) < X(j%) Then
               tmp& = X(i%)
               X(i%) = X(j%)
               X(j%) = tmp&
            End If
        Next j%
    Next i%
    s# = 0
    k# = 0
    For i% = 1 To n%
        If X(i%) Mod 2 <> 0 Then
           s# = s# + X(i%)
           k# = k# + 1
        End If
    Next i%
    avg# = s# / k#
    For i% = 1 To n%
        If X(i%) Mod 3 = 0 Then
           Cells(row, c1 + i% - 1).Value = avg#
        Else
           Cells(row, c1 + i% - 1).Value = X(i%)
        End If
    Next i%
End Sub
 
Sub Start()
 
    sortCells 2, 4, 13
 
End Sub



Когда пытаюсь применить макрос к строке в екселе, выдает run-time error '6': overflow
debug показывает строку 27 avg# = s# / k#
...
Рейтинг: 0 / 0
11.06.2020, 17:52
    #39968330
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает код? Сортировка с заменой
...
Рейтинг: 0 / 0
11.06.2020, 18:02
    #39968336
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает код? Сортировка с заменой
Хотя мне сложно понять, как на

The shorthand for the types is: % -integer; & -long; @ -currency; # -double; ! -single; $ -string

double можно словить overflow. Но в любом случае:

1) значение переменныx в момент "debug показывает" автор не привел
обычно при "debug" пытаются "показывать" не только код, но и данные который этот код обрабатывает
2) тестовые данные (Excell файл) автор так же не приложил
3) т.к. есть сомнения, что автор действительно написал данный код, а не просто скопи-пастил первое попавшиеся из И-нете, то лично мне напрягаться влом
(человек способный сам изобразить сортировку пузырьком, скорее всего умеет отлаживать программы. Свою первую сортировку я точно не с первого раза написал ))) )
...
Рейтинг: 0 / 0
11.06.2020, 18:51
    #39968352
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает код? Сортировка с заменой
у вас деление на ноль происходит.

кроме того, символы сокращенного объявления типа вы используете бессмысленным образом.
Они работают только в объявлениях типов переменных, которых у вас и не нет,
судя по тому, что показано.
...
Рейтинг: 0 / 0
11.06.2020, 19:54
    #39968385
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает код? Сортировка с заменой
Morych
Когда пытаюсь применить макрос к строке в екселе, выдает run-time error '6': overflow
у нас нет вашей "строки в экселе". Приложите файлик, чтобы можно было воспроизвести проблему.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему не работает код? Сортировка с заменой / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]