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

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

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

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

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

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

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

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

VB.NET
1
Exit For
Так как вы умудрились вместо него поставить?
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 20:24  [ТС]
в том то и дело,не поставил,не работает пока,не могу добиться,что бы после 3 ответов окно возвращалось на форму 1 и все
0
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 20:29
Цитата Сообщение от slavikod Посмотреть сообщение
в том то и дело,не поставил,не работает пока,не могу добиться,что бы после 3 ответов окно возвращалось на форму 1 и все
Какой код вы сейчас используете? Тот, что вам писали? Или свой? Скидывайте последний код и говорите в чем проблема.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 21:47  [ТС]
в общем,как-то но работает,слепил из вашего и своего.. вот финально,что вышло,может кому-то пригодится
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
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 21:59
Лучший ответ Сообщение было отмечено 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  [ТС]
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
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 11:02
Цитата Сообщение от slavikod Посмотреть сообщение
какой надо функцией воспользоваться,что бы она закрывала инпут.бокс по таймауту?
Имеется в виду, каждые 12 секунд закрывался 1 инпут по порядку?
1
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 21:16  [ТС]
Нет,полный выход из инпута, "вы опоздали,начните с начала"

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

Я написал код, но меня выкинуло и он не сохранился. Но думаю добавить переменную не сложно.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 22:11  [ТС]
как-то так?
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
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 22:35
Цитата Сообщение от slavikod Посмотреть сообщение
как-то так?
Если работает, можно и так.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
16.11.2015, 22:42  [ТС]
не работает

Добавлено через 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
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 22:54
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  [ТС]
а button.click() в конце зачем? и ошибку на нем выдает,59 строчка

Добавлено через 6 минут
не закрывает инпутбокс
0
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 23:17
Цитата Сообщение от 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  [ТС]
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
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.11.2015, 23:42
Эта конструкция служит для отлавливания ошибок программы

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  [ТС]
хотя исходя из этого кода
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2015, 23:43

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru