Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 21:14   #11
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

понимаю, а так?
Код:
Option Explicit
Option Base 1
Sub F(x() As Double, k As Integer)
Dim i As Integer
For i = 1 To k
x(i) = Rnd * 100 - 50
Next i
End Sub
Sub F1(x() As Double, n As Integer, m As Double, nm As Integer)
Dim Nmax As Integer, max As Double, i As Integer, a As Double
Nmax = 1: max = x(1)
For i = 2 To n
If x(i) > max Then
Nmax = i
max = x(i)
End If
Next i
Nmax = F1(x, n)
End Sub
Option Explicit
Sub Test()
Dim a() As Double, n As Integer, nm As Integer
Dim m As Double, r As Double
n = InputBox("n=")
ReDim a(n)
Call F(a, n)
Call F1(a, n, m, nm)
If m < 0 Then
r = a(1)
a(1) = a(nm)
a(nm) = r
Else
r = a(n)
a(n) = a(nm)
a(nm) = r
End If
End Sub
Sub F2(a() As Double, n As Integer, nm As Integer)
Call F2(a, n, nm)
Debug.Print "Наибольший элемент=" + Format(max, "Scientific") + Chr(13) + "Номер наибольшего элемента=" + Ctr(Nmax) + Chr(13)
End Sub
ReShida вне форума Ответить с цитированием
Старый 25.12.2017, 22:05   #12
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Option Explicit
Option Base 1
Sub F(x() As Double, k As Integer)
    Dim i As Integer
    For i = 1 To k
        x(i) = Rnd * 100 - 50
    Next i
End Sub

Function F1(x() As Double, n As Integer)
    Dim max As Double, i As Integer, nmax As Double
     max = x(1): nmax = 1
    For i = 2 To n
        If x(i) > max Then
            nmax = i
            max = x(i)
        End If
    Next i
    F1 = nmax
End Function

Sub Test()
    Dim a() As Double, n As Integer, nm As Integer
    Dim m As Double, r As Double
    n = InputBox("n=")
    ReDim a(n)
    Call F(a, n)
    nm = F1(a, n)
    If a(nm) < 0 Then
        r = a(1)
        a(1) = a(nm)
        a(nm) = r
    Else
        r = a(n)
        a(n) = a(nm)
        a(nm) = r
    End If
    F2 a, nm
End Sub

Sub F2(a() As Double, nm As Integer)
    Debug.Print "Наибольший элемент=" + Format(a(nm), "Scientific") + Chr(13) + "Номер наибольшего элемента=" + CStr(nm) + Chr(13)
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.12.2017, 20:57   #13
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

спасибо сегодня кинул тебе на кошель (ранее не было возможности)
но у меня ещё один вопрос, препод сказал, что нужно в конце вывести новый массив таким образом
Код:
Sub F3(x() As Double, k As Integer)
Dim i As Integer
For i = 1 To k
Debug.Print x(i)
Next i
Debug.Print x(i)
End Sub
но когда запускаю прогу, в отладке кроме ранее прописанного ничего не выводится
это норма?
ReShida вне форума Ответить с цитированием
Старый 27.12.2017, 21:01   #14
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

то есть вот так
Код:
Sub F3(x() As Double, k As Integer)
Dim i As Integer
For i = 1 To k
Debug.Print x(i)
Next i
Debug.Print
End Sub
ReShida вне форума Ответить с цитированием
Старый 27.12.2017, 21:15   #15
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Ну а F3 как и когда вызываешь?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.12.2017, 22:10   #16
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

нигде и никак, это же новая подпрограмма
ReShida вне форума Ответить с цитированием
Старый 27.12.2017, 23:12   #17
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Легче было преподу забашлять за зачет.
Код:
....
End If
    F2 a, nm
    F3 a, n
End Sub
...
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на VBA..... Ingez Помощь студентам 4 26.03.2013 00:33
Задача по VBA qpJIaqpU Помощь студентам 1 21.10.2012 22:43
Задача в VBA Бурундук Помощь студентам 3 03.06.2011 16:55
Задача на VBA Racer13 Microsoft Office Excel 6 01.06.2011 10:04