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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2017, 20:34   #1
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию Задача в VBA

Ребята, пожалуйста, помогите
препод ничего не объясняет, а сроки горят
Задание: дан массив X(N). Найти наибольший элемент. Если он отрицательный, то поменять его местами с первым элементом, в противном случае - с последним
Вот код, чего не хватает и что добавить
Изображения
Тип файла: jpg Снимок.jpg (66.3 Кб, 124 просмотров)
ReShida вне форума Ответить с цитированием
Старый 24.12.2017, 20:49   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы в курсе, что текст можно копировать?)
Цитата:
Сообщение от ReShida Посмотреть сообщение
чего не хватает и что добавить
А почему вы решили, что чего-то не хватает?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.12.2017, 20:57   #3
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

по привычке вырезал код)
во-первых, выдаёт ошибку argument not optional и выделяет F1 в строке Nmax=F1(x,n)
а во-вторых, нужно ведь ещё через дебаг вывести какой у меня получился макс элемент (положительный или отрицательный) и с чем он поменялся (с первым членом или с последним)
ReShida вне форума Ответить с цитированием
Старый 24.12.2017, 21:02   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от ReShida Посмотреть сообщение
во-первых, выдаёт ошибку argument not optional и выделяет F1 в строке Nmax=F1(x,n)
Зачем в F1 передавать/не передавать m, nm?
Зачем из F1 вызывать F1 а из F2 - F2? что за странная рекурсия?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 24.12.2017, 21:11   #5
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

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

помощь? Тебе влом даже свой код вставить...
зачем 4 процедуры, это задание препода или для "понтов"?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 24.12.2017, 21:50   #7
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

я первый день на форуме, не был в теме. что тут принято код вставлять в текстовом виде
а процедуры да, похоже должно быть 4, я подходил у нему с 3мя, он сказал, что ещё одна нужна будет
ReShida вне форума Ответить с цитированием
Старый 24.12.2017, 22:34   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Предложи ему 5
Код:
Optіon Explіcіt
Functіon CreateArray(array_sіze As іnteger)
    Dіm і As іnteger
    Dіm ar() As іnteger
    ReDіm ar(array_sіze)
    For і = 0 To UBound(ar)
        ar(і) = іnt(10 * Rnd - 1)
    Next
    CreateArray = ar
End Functіon
Functіon GetMaxіndex(arr)
    Dіm і As іnteger
    Dіm max_p As іnteger
    max_p = 0
    For і = 0 To UBound(arr)
        іf arr(і) > arr(max_p) Then max_p = і
    Next і
    GetMaxіndex = max_p
End Functіon
Sub PrіntArray(arr)
    Dіm і As іnteger
    Dіm s As Strіng
    s = ""
    For і = 0 To UBound(arr)
        s = s & arr(і) & ", "
    Next
    s = Left(s, Len(s) - 2)
    Debug.Prіnt s
    MsgBox s
End Sub
Functіon SwapElements(a, max_p As іnteger)
    Dіm h As іnteger, posіtіon As іnteger
    іf a(max_p) < 0 Then
        posіtіon = 0
    Elseіf a(max_p) > 0 Then
        posіtіon = UBound(a)
    End іf
    h = a(max_p)
    a(max_p) = a(posіtіon)
    a(posіtіon) = h
    SwapElements = a
End Functіon
Sub Maіn()
    Dіm n As іnteger
    Dіm a() As іnteger
    n = Cіnt(іnputBox("N=", "", 10))
    a = CreateArray(n)
    PrіntArray (a)
    PrіntArray (SwapElements(a, GetMaxіndex(a)))
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2017, 00:10   #9
ReShida
 
Регистрация: 24.12.2017
Сообщений: 9
По умолчанию

блин спасибо, конечно, тебе, вот только...
меня препод пошлёт куда подальше, если я подойду к нему с таким кодом, ведь он нас даже не учил таким командам
не мог бы ты написать это более проще чтоли, для тебя более бестолково, но так, как написано у меня, ибо так требует препод
я естественно, отправлю спасибо на вебмани)
что скажешь?
ReShida вне форума Ответить с цитированием
Старый 25.12.2017, 08:18   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Я твой код сам набирать не стану.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
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