Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
1

Завершить прохождение теста при трех неверных ответах

15.11.2015, 01:45. Показов 2383. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый,делаю программу тест-опросник на базе input.box
всего к примеру 5 вопросов у меня,нужно принудительно завершить тест если отвечено минимум на 3 вопроса верно и конечно же в конце 5 вопросов,немного запутался,может кто-то подскажет кодом? (пробовал и do loop все не то)
после каждого инпут.бокса идет сравнение инпута пользователя с array и если совпадает,то тогда просто делаю кантер+1 и так далее.(рез=рез+1)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2015, 01:45
Ответы с готовыми решениями:

Прохождение теста
Доброго времени суток! Делаю программу для создания теста по английскому. тесты в виде таблиц уже...

Прохождение теста
Доброго времени суток! Есть здесь php/js/html+css тесты? то есть вопрос - ниже варианты ответов....

Прохождение теста
Есть такой код открытия теста (простое открытие из папки): procedure TForm1.N5Click(Sender:...

прохождение теста
Привет всем. Есть форма для выбора ответов. Вот ее код: <html> <form action="otvet.php"...

43
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 16:55 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от slavikod Посмотреть сообщение
проблема в том,что это надо открывать отдельный саб
Проблема в том, что вы не туда это вставили.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 19:18  [ТС] 22
Я поставил вмето exit for как вы и сказали,это не верно?
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 19:51 23
Цитата Сообщение от slavikod Посмотреть сообщение
Я поставил вмето exit for как вы и сказали,это не верно?
В вашем последнем коде нет

VB.NET
1
Exit For
Так как вы умудрились вместо него поставить?
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 20:24  [ТС] 24
в том то и дело,не поставил,не работает пока,не могу добиться,что бы после 3 ответов окно возвращалось на форму 1 и все
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 20:29 25
Цитата Сообщение от slavikod Посмотреть сообщение
в том то и дело,не поставил,не работает пока,не могу добиться,что бы после 3 ответов окно возвращалось на форму 1 и все
Какой код вы сейчас используете? Тот, что вам писали? Или свой? Скидывайте последний код и говорите в чем проблема.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 21:47  [ТС] 26
в общем,как-то но работает,слепил из вашего и своего.. вот финально,что вышло,может кому-то пригодится
VB.NET
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 Dim questions = New String(0 To 4) {" Estonia got independent first time?", " The First World war started", " The Second World War Ended?", " European Union was created?", "The  Queen of the Great Britain, Elizabeth II was born?"}
    Dim answers = New String(0 To 4) {"1918", "1914", "1945", "1957", "1926"}
    Dim answer As String
    Dim correct As Integer
    Friend counter As Integer = 5
    Friend counternow As Integer = 0
    Friend Res_txt
    Friend cgood = 0
    Friend cbad = 0
 
 
    Function getanswer(q As Integer)
 
        If InputBox("In which year" & questions(q), "Question " & q + 1) = answers(q) Then
            correct = correct + 1
            cgood = cgood + 1
        Else
            cbad = cbad + 1
        End If
        If correct = 3 Then
            Return True
        Else
            Return False
        End If
    End Function
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
        Label1.Text = 45
        Timer1.Enabled = True
 
        For i As Integer = 0 To counter - 1
            Res_txt = getanswer(i)
            counternow += 1
            If correct = 3 Then Exit For
        Next
 
        If cgood = 3 Then
            MsgBox("Congrats! You did " & cgood & " out of " & counter & ". You passed the test!")
            correct = 0
            counter = 5
            counternow = 0
            cbad = 0
            Timer1.Enabled = 0
            Label1.Text = 0
            cgood = 0
        End If
 
        If counternow = counter Then
            MsgBox("Bad! You did " & cgood & " out of " & counter & ". You not passed the test!")
            correct = 0
            counter = 5
            counternow = 0
            cbad = 0
            Timer1.Enabled = 0
            Label1.Text = 0
            cgood = 0
        End If
 
    End Sub
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 21:59 27
Лучший ответ Сообщение было отмечено slavikod как решение

Решение

Тогда так лучше будет

VB.NET
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
42
43
44
45
46
47
Dim questions = New String(0 To 4) {" Estonia got independent first time?", " The First World war started", " The Second World War Ended?", " European Union was created?", "The  Queen of the Great Britain, Elizabeth II was born?"}
Dim answers = New String(0 To 4) {"1918", "1914", "1945", "1957", "1926"}
Dim answer As String
Friend counter As Integer = 5
Friend counternow As Integer = 0
Friend cgood = 0
Friend cbad = 0
 
Function getanswer(q As Integer)
  If InputBox("In which year" & questions(q), "Question " & q + 1) = answers(q) Then
    cgood = cgood + 1
  Else
    cbad = cbad + 1
  End If
  Return true
End Function
 
Function resetform()
counter = 5
counternow = 0
cbad = 0
Timer1.Enabled = 0
Label1.Text = 0
cgood = 0
Return true
End Function
 
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Label1.Text = 45
Timer1.Enabled = True
 
        For i As Integer = 0 To counter - 1
            getanswer(i)
            counternow += 1
            If cgood = 3 Then Exit For
        Next
 
        If cgood = 3 Then
            MsgBox("Congrats! You did " & cgood & " out of " & counter & ". You passed the test!")
           resetform()
        Else
          If counternow = counter Then
            MsgBox("Bad! You did " & cgood & " out of " & counter & ". You not passed the test!")
           resetform()
          End If
        End If
End Sub
2
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 01:54  [ТС] 28
cпасибо,более изящный вариант!

Добавлено через 2 часа 36 минут
маленький вопрос еще!
прикрутил к этому делу таймер
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = Val(Label1.Text) - 1
        If Label1.Text = 0 Then
            Timer1.Enabled = False
            MsgBox("Sorry you are out of time! Please Try again!")
            cgood = 0
            cbad = 0
            resetform()
 
        End If
    End Sub
какой надо функцией воспользоваться,что бы она закрывала инпут.бокс по таймауту? (в настройках таймера выставил 12 сек)
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 11:02 29
Цитата Сообщение от slavikod Посмотреть сообщение
какой надо функцией воспользоваться,что бы она закрывала инпут.бокс по таймауту?
Имеется в виду, каждые 12 секунд закрывался 1 инпут по порядку?
1
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 21:16  [ТС] 30
Нет,полный выход из инпута, "вы опоздали,начните с начала"

Добавлено через 8 часов 21 минуту
т е при окончании таймера инпутбокс закрывается и просто по дефолту показывается форма,с возможностью нажать опять на тест
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 22:05 31
Цитата Сообщение от slavikod Посмотреть сообщение
т е при окончании таймера инпутбокс закрывается
Писал, писал ответ, а меня выкинуло с форума. Я не знаю, какзакрыть инпутбокс программно, дам подсказку, нужна переменная, которая по завершению времени в таймере станет =1, А в цикле сделать проверку, если переменная =1 то завершить цикл + програмно нажать кнопку, да бы тест перезапустился с начала.

Я написал код, но меня выкинуло и он не сохранился. Но думаю добавить переменную не сложно.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 22:11  [ТС] 32
как-то так?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'button2.click
if label1.text=0 then X=1
end if
 
 
        For i As Integer = 0 To counter - 1
            getanswer(i)
            counternow += 1
            If cgood = 3 Then Exit For
if x=1 then exit for
        Next
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = Val(Label1.Text) - 1
        If Label1.Text = 0 Then
            Timer1.Enabled = False
            MsgBox("Sorry you are out of time! Please Try again!")
            cgood = 0
            cbad = 0
            resetform()
 
        End If
    End Sub
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 22:35 33
Цитата Сообщение от slavikod Посмотреть сообщение
как-то так?
Если работает, можно и так.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 22:42  [ТС] 34
не работает

Добавлено через 5 минут
вообще,мой таймер не здоров,если проходит таймер запустить функцию заново не получается.. накосячил я
VB.NET
1
2
3
4
5
6
7
8
9
10
11
  Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = Val(Label1.Text) - 1
        If Label1.Text = 0 Then
            Timer1.Enabled = False
            MsgBox("Sorry you are out of time! Please Try again!")
            If Label1.Text = 0 Then x = 1
            resetform()
 
        End If
 
    End Sub
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 22:54 35
VB.NET
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Dim questions = New String(0 To 4) {" Estonia got independent first time?", " The First World war started", " The Second World War Ended?", " European Union was created?", "The  Queen of the Great Britain, Elizabeth II was born?"}
Dim answers = New String(0 To 4) {"1918", "1914", "1945", "1957", "1926"}
Dim answer As String
Friend counter As Integer = 5
Friend counternow As Integer = 0
Friend cgood = 0
Friend cbad = 0
Friend timeisout = 0
 
Function getanswer(q As Integer)
  If InputBox("In which year" & questions(q), "Question " & q + 1) = answers(q) Then
    cgood = cgood + 1
  Else
    cbad = cbad + 1
  End If
  Return true
End Function
 
Function resetform()
counter = 5
counternow = 0
cbad = 0
Timer1.Enabled = 0
Label1.Text = 0
cgood = 0
Return true
End Function
 
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
timeisout = 0
Label1.Text = 45
Timer1.Enabled = True
 
        For i As Integer = 0 To counter - 1
            getanswer(i)
            counternow += 1
            If cgood = 3 Then Exit For
            If timeisout = 1 Then Exit For
        Next
 
        If cgood = 3 Then
            MsgBox("Congrats! You did " & cgood & " out of " & counter & ". You passed the test!")
           resetform()
        Else
          If counternow = counter Then
            MsgBox("Bad! You did " & cgood & " out of " & counter & ". You not passed the test!")
           resetform()
          End If
        End If
End Sub
 
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = Val(Label1.Text) - 1
        If Label1.Text = 0 Then
            Timer1.Enabled = False
timeisout = 1
            MsgBox("Sorry you are out of time! Please Try again!")
            resetform()
 button2.click
        End If
    End Sub
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 23:16  [ТС] 36
а button.click() в конце зачем? и ошибку на нем выдает,59 строчка

Добавлено через 6 минут
не закрывает инпутбокс
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 23:17 37
Цитата Сообщение от slavikod Посмотреть сообщение
а button.click() в конце зачем?
Замени на

VB.NET
1
Button1_Click(sender, e)
Перезапустит тест по идее.

Добавлено через 32 секунды
Цитата Сообщение от slavikod Посмотреть сообщение
не закрывает инпутбокс
Я не знаю как закрыть инпут, поэтому просто решил перезапустить его с начала.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 23:27  [ТС] 38
Button1_Click(sender, e)
запускает новый инпутбокс (новый тест)
буду думать как решить..
я не понимаю немного логики обработки инпутбокса..
к примеру я хочу закрыть трай.кэтч. ввод символов и букв
по логике должно быть,что-то
VB.NET
1
2
3
4
5
6
7
8
Try
            
            If Not IsNumeric(TextBox1.Text And TextBox2.Text) Then
            End If
 
        Catch ex1 As Exception
            MsgBox("Please input only digits")
        End Try
нот ис нумерик к чему надо проверять? (текст бокса нету же)
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 23:42 39
Эта конструкция служит для отлавливания ошибок программы

VB.NET
1
2
3
4
5
Try
'Выполняем любой код программы и ждем возможные ошибки....
Catch ex1 As Exception
'Если произошла ошибка, то выполняем эту часть. Например выводим сообщение об ошибке + информацию о ней.
End Try
Если не использовать такие конструкции, то при ошибке будет вылет программы + запуск дебаггера, если есть установленный в системе.

Для поставленной задачи можно переписать немного функцию

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function getanswer(q As Integer)
reenter:
Dim answ = InputBox("In which year" & questions(q), "Question " & q + 1)
If Not IsNumeric(answ) Then
MsgBox "This is no number!"
goto reenter
end if
  If  answ = answers(q) Then
    cgood = cgood + 1
  Else
    cbad = cbad + 1
  End If
  Return true
End Function
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 23:43  [ТС] 40
хотя исходя из этого кода
VB.NET
1
2
3
4
5
 For i = 1 To 20
            Dim X As String = InputBox("Please enter the " & numbers(i) & " number. To finish, just click OK button or press ENTER key ")
            If X = 0 Then Exit For
            list.Add(X)
        Next
программа будет крошиться при вводе другого символа мол Х не равен 0,надо обьявит трай Х= набор символов,хотя х обьявлен с функцией
0
16.11.2015, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2015, 23:43
Помогаю со студенческими работами здесь

Прохождение теста на intuit.ru
Люди добрые всем привет! Помогите у меня проблема: Учусь я в лицее на гуманитарном...

Время кд на прохождение теста
Привет всем. Есть проект с пару тестами, результаты тестов записываются в таблицу Result, название...

Программа в Аксез : прохождение теста
есть тестовая программка в Аксесс. в которой проблема: --после прохождения теста на печатную...

Прохождение теста на исключение в maven
Здравствуйте, помогите пожалуйста решить проблему. Имеется класс со следующим методом public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru