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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2016, 18:10   #1
MorbidGoth
 
Регистрация: 03.05.2016
Сообщений: 3
По умолчанию Помогите найти ошибку в задании с вектором в VBA

Добрый день.

Вобщем задача была следующей:
некое тело двигается по клеточкам в excel, натыкается на клеточку с номером, появляется InputBox с заданием, задание нужно выполнить и программа оценит правильный ответ или нет.
1. Найти сумму элементов вектора, которые меньше данного числа
2. Найти сумму нечетных элементов вектора

Программа считает все правильно (я проверяла=), но когда идет оценка результата, то даже на правильный ответ мне пишет Wrong answer.
Никак не могу найти, где ошибка.
Может кто-нибудь сможет помочь?

Вот код
Код:
Sub Quests(nr)
Dim result
Const Penalty_amount = 5
    If nr = 1 Then
    result = Translate_eng_to_est()  ' s?na t?lkimine: inglise => eesti, juhuslik valik loendist
    ElseIf nr = 2 Then
    result = vaiksemate_vektorite_summa() ' antud arvust v?iksemate vektori elementide summa
    ElseIf nr = 3 Then
    result = vekt_paaritu_el_sum() 'vektori paarituarvuliste elementide summa
    ElseIf nr = 4 Then
    result = mat_max_el() ' maksimaalne element maatriksi juhuslikus reas
 End If
     If result = -1 Then 'penalty setting
        Range("Penalty") = Range("Penalty") + 4 * Penalty_amount
    ElseIf result = 0 Then
        Range("Penalty") = Range("Penalty") + Penalty_amount
    ElseIf result = 1 Then
        Range("Penalty") = Range("Penalty")
    End If       
End Sub

Function vaiksemate_vektorite_summa() ' сумма элементов вектора, которые меньше данного числа
 Dim answer2
 make_vektor
   answer2 = InputBox("Vaiksemate elementide summa (Vahem kui '5').          '" & Show_vektor & "'  ")
   If answer2 = "" Then
        MsgBox "Empty answer!"
        vaiksemate_vektorite_summa = -1
        ElseIf answer2 <> VVSum Then
        MsgBox "Wrong answer!"
        vaiksemate_vektorite_summa = 0
    ElseIf answer2 = VVSum Then
        MsgBox "Correct!"
        vaiksemate_vektorite_summa = 1
    End If
   End Function

Function vekt_paaritu_el_sum() 'сумма нечетных элементов вектора
Dim answer3
make_vektor
answer3 = InputBox("Vektori paarituarvuliste elementide summa.                  '" & Show_vektor & "'  ")
If answer3 = "" Then
        MsgBox "Empty answer!"
        vekt_paaritu_el_sum = -1
         ElseIf answer3 <> PASum Then
        MsgBox "Wrong answer!"
        vekt_paaritu_el_sum = 0
    ElseIf answer3 = PASum Then
        MsgBox "Correct!"
        vekt_paaritu_el_sum = 1
    End If
End Function

Sub make_vektor() 'создает вектор
     Dim n As Integer
     Dim i As Integer
      n = Rand_num(4, 10)
   ReDim V(1 To n)  
For i = 1 To n
      V(i) = Rand_num(-10, 10)
 Next i  
End Sub

Function Show_vektor()
    Dim i As Integer
    Dim T
    Dim n As Integer    
        n = UBound(V, 1)
        T = V(1)
        For i = 2 To n
            T = T & " , " & V(i)
        Next i
    Show_vektor = T
End Function

Function VVSum() 'сумма векторов, которые меньше данного числа
    Dim i As Integer
    Dim n As Integer    
     n = UBound(V, 1)
        For i = 1 To n
            If V(i) < 5 Then VVSum = VVSum + V(i)
        Next i       
End Function

Function PASum() 'сумма нечетных векторов
   Dim i As Integer
   Dim n As Integer   
   n = UBound(V, 1)
        For i = 1 To n
        If V(i) Mod 2 <> 0 Then PASum = PASum + V(i)
    Next i
End Function

Последний раз редактировалось MorbidGoth; 04.05.2016 в 18:24.
MorbidGoth вне форума Ответить с цитированием
Старый 04.05.2016, 18:26   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Еще бы сам excel файл увидить с этим...
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 04.05.2016, 18:38   #3
MorbidGoth
 
Регистрация: 03.05.2016
Сообщений: 3
По умолчанию

вот
rada.zip
MorbidGoth вне форума Ответить с цитированием
Старый 04.05.2016, 19:30   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

InputBox возвращает значения типа String a VVSum Integer, надо бы преобразовать
Код:
answer2 = InputBox("Vaiksemate elementide summa (Vahem kui '5').          '" & Show_vektor & "'  ")
в
Код:
answer2 = CInt(InputBox("Vaiksemate elementide summa (Vahem kui '5').          '" & Show_vektor & "'  "))
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 04.05.2016, 19:33   #5
MorbidGoth
 
Регистрация: 03.05.2016
Сообщений: 3
По умолчанию

Ура!Ура! оно работает))))

спасибо большое))

пойду копать дальше
MorbidGoth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
Помогите найти ошибку NeXuLoN Паскаль, Turbo Pascal, PascalABC.NET 5 29.09.2009 04:58
помогите найти ошибку lg12 Помощь студентам 6 18.08.2009 18:26
Не совсем понимаю, что нужно найти в задании. greenypeace Помощь студентам 2 08.06.2009 13:50