Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / реверсивная функция / 6 сообщений из 6, страница 1 из 1
23.01.2014, 21:27
    #38536096
fastomg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
Ребят, ошибка в программе, пишет , что аргумент not optional

Дан массив C1, … , C20.
Определить сумму первых пяти элементов, вторую сумму с 15ого по 20ый элемент
Найти Smin(минимальную сумму).

Код: 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.
Sub макрос66()
    Dim c(20) As Single, s1, s2, Smin, h1, h2 As Single
    
    For i = 1 To 20
    c(i) = Cells(i, 1)
    Next i
    
    
    If h1 = 1 And h2 = 5 Then
        Call summ(c)
        s1 = Cells(1, 3)
    End If
    
    If h1 = 15 And h2 = 20 Then
        Call summ(c)
        s2 = Cells(2, 3)
    End If

    If s1 > s2 Then
    Smin = s2
    Else
    Smin = s1
    End If
    Cells(3, 3) = Smin
End Sub

Function summ(g() As Single, h1 As Single, h2 As Single) As Single
    summ = 0
    For i = h1 To h2
        summ = summ + g(i)
    Next i
End Function
...
Рейтинг: 0 / 0
23.01.2014, 22:06
    #38536117
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
fastomgаргумент not optionalа что непонятного в ошибке?
у summ три обязательных аргумента, а вызывается с одним
...
Рейтинг: 0 / 0
23.01.2014, 22:19
    #38536124
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
Код: 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.
Option Explicit
Sub ìàêðîñ66()
    Dim c(100) As Single
    Dim s1 As Single
    Dim s2 As Single
    Dim i As Single
    Dim smin As Single
    
    For i = 1 To 20
    c(i) = Cells(i, 1)
    Next i
    
    s1 = 0
    s2 = 0
    
    For i = 1 To 20
    If i >= 1 And i <= 5 Then s1 = s1 + c(i)
    If i >= 15 And i <= 20 Then s2 = s2 + c(i)
    Next i
    
    Cells(2, 3) = "s1=" & s1
    Cells(2, 4) = "s2=" & s2
    
    If s1 > s2 Then
    smin = s2
    Else
    smin = s1
    End If
    Cells(2, 5) = "smin=" & smin
    End Sub
...
Рейтинг: 0 / 0
23.01.2014, 23:29
    #38536166
fastomg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
Volodbka,

а куда делась функция? и сделать вызов функции call summ 2 раза
...
Рейтинг: 0 / 0
24.01.2014, 10:42
    #38536402
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
fastomg,

Вы знаете какие-нибудь другие типы переменных кроме Single? Логичнее использовать Double для данных и Long для переменной цикла.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim c(20) As Double, i As Long  'переменные модуля, доступны во всех процедурах модуля

Sub макрос66()
    Dim s1 As Double, s2 As Double, Smin As Double  'тип необходимо указывать для каждой переменной
    
    For i = 1 To 20
        c(i) = Cells(i, 1)
    Next i
    
    s1 = summ(1, 5)
    Cells(1, 3) = s1
    s2 = summ(15, 20)
    Cells(2, 3) = s2

    If s1 > s2 Then Smin = s2 Else Smin = s1
    Cells(3, 3) = Smin
End Sub

Function summ(h1 As Long, h2 As Long) As Double
    For i = h1 To h2
        summ = summ + c(i)
    Next i
End Function
...
Рейтинг: 0 / 0
24.01.2014, 19:34
    #38537371
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реверсивная функция
если sub то call,
если function то равно =.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / реверсивная функция / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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