powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему не работает код? Сортировка с заменой
5 сообщений из 5, страница 1 из 1
Почему не работает код? Сортировка с заменой
    #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
Почему не работает код? Сортировка с заменой
    #39968330
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему не работает код? Сортировка с заменой
    #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
Почему не работает код? Сортировка с заменой
    #39968352
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас деление на ноль происходит.

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


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