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

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

15.11.2015, 01:45. Показов 2381. Ответов 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, 01:51 2
Цитата Сообщение от slavikod Посмотреть сообщение
немного запутался,может кто-то подскажет кодом?
Код в студию. Поправим и подскажем.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 02:09  [ТС] 3
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
  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
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Label1.Text = 45
        Timer1.Enabled = True
 
 
        answer = InputBox("In which year" & questions(0), "Question 1")
            If answer = answers(0) Then
                correct = correct + 1
            End If
            answer = InputBox("In which year" & questions(1), "Question 2")
            If answer = answers(1) Then
                correct = correct + 1
            End If
            answer = InputBox("In which year" & questions(2), "Question 3")
            If answer = answers(2) Then
                correct = correct + 1
            End If
 
            answer = InputBox("In which year" & questions(3), "Question 4")
            If answer = answers(3) Then
                correct = correct + 1
            End If
            answer = InputBox("In which year" & questions(4), "Question 5")
            If answer = answers(4) Then
                correct = correct + 1
            End If
 
 
        If correct >= 3 Then
                MsgBox("Congrats! You did " & correct & " out of 5. You passed the test!")
 
            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
            MsgBox("Sorry you are out of time! Please Try again!")
 
 
 
 
        End If
 
    End Sub
собственно,три функции нужен выход с результатом остатка "правильно и не правильно" ответов
выход если оставшееся время таймера равно нулю
пользователь отвечает минимум на 3 вопроса
пользователь завершает все 5 ответов.
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 11:56 4
Как я понимаю, это не весь код, но на базе того, что есть, вот (да можно было еще уменьшить код, но для наглядности расписал)

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
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 Result
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
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
Result = getanswer(i);
counternow +=1
if Result = True then
cgood +=1
else
cbad +=1
end if
Next i
 
if cgood >= 3 then
MsgBox("Congrats! You did " & cgood & " out of " & counter & ". You passed the test!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
End sub
end if
 
if counternow = counter then
MsgBox("Bad! You did " & cgood & " out of " & counter & ". You not passed the test!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
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
            MsgBox("Sorry you are out of time! Please Try again!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
         End If
    End Sub
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 13:29  [ТС] 5
cпасибо,только у меня vb 2015 ругается на синтаксис
counternow не задекларирована
и
character is not valid на Result = getanswer(i) ,где новичок тупит? (
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 13:32 6
Это
VB.NET
1
Friend counter As integer = 5
заменить на
VB.NET
1
2
Friend counter As integer = 5
Friend counternow As integer = 0
А все

VB.NET
1
Result
ЗАменить на

VB.NET
1
Res_txt
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 13:36  [ТС] 7
спасибо большое! Прошу прощения, на строке Res_txt = getanswer(i) ,все равно висит character is not valid на (i)
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 13:43 8
character is not valid на (i)
Точку с запятой уберите в конце, я по привычке после PHP.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 13:54  [ТС] 9
спасибо! сброс переменных,после каждого варианта
cgood = 0
cbad = 0 ,к примеру ?
1) потестил,почему-то на 3 правильных ответах тест не останавливается,а продолжается дальше,может,что-то не так делаю,но вот беда,что мне надо чтоб на минимум 3 правильных ответа и выходил тест с ответом "поздравления"
2) тоже,криворук я где-то,после 5 ответов,сначала вылазит поздравления,после ок,вылазит что вы не сдали,и тест начинается по кругу
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 14:03 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от slavikod Посмотреть сообщение
1) потестил,почему-то на 3 правильных ответах тест не останавливается
Кликните здесь для просмотра всего текста

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 Result
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
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
Result = getanswer(i);
counternow +=1
if Result = True then
cgood +=1
else
cbad +=1
end if
 
if cgood >= 3 then
MsgBox("Congrats! You did " & cgood & " out of " & counter & ". You passed the test!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
exit for
end if
 
if counternow = counter then
MsgBox("Bad! You did " & cgood & " out of " & counter & ". You not passed the test!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
exit for
end if
 
Next i
 
 
 
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
            MsgBox("Sorry you are out of time! Please Try again!")
'А тут мы должны сбросить все переменные и вернуть все так, как было при запуске программы.
         End If
    End Sub
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 14:17  [ТС] 11
exit for в vb 2015 работает,только если было дано условие ранее для for=
и ругается на синтаксис не корректного использования
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
15.11.2015, 14:25 12
Цитата Сообщение от slavikod Посмотреть сообщение
тест-опросник на базе input.box
Написать программу для младших школьников, проверяющую знание ими таблицы умножения от 2 до 12

Тоже 5 вопросов. Код см. по Альт-F11. Использовал для выхода Cancel в инпутбоксе (удобно!).
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 14:27 13
Замените
VB.NET
1
exit for
на
VB.NET
1
End Sub
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 15:33  [ТС] 14
вроде все маломальски слепил,остался один вопрос,сделал ,что после 3 верных ответов вылетает мессажбокс с поздравлениями,но при этом,если это 3 из 5 оставшиеся 2 вопроса тоже задаются. как остановить работу инпутбокса? именно,чтоб при правильные ответы =больше 3 последующие не задавались?
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 15:49 15
Цитата Сообщение от slavikod Посмотреть сообщение
как остановить работу инпутбокса?
Ждем текущий код, какой есть.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 15:51  [ТС] 16
надо подчистить ибо некоторые переменные не используются,но тестирую и работает как надо

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
62
   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
    Dim testval As Char
 
    Function getanswer(q As Integer)
 
        If InputBox("In which year" & questions(q), "Question " & q + 1) = answers(q) Then
            correct = correct + 1
        End If
        If correct >= 3 Then
            MsgBox("goodjob")
 
            cgood = 0
            cbad = 0
        Else
 
        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 Res_txt = True Then
                cgood += 1
            Else
                cbad += 1
            End If
        Next i
 
        If correct < 3 Then
            MsgBox("Bad! You did " & cgood & " out of " & counter & ". You Not passed the test!")
            cgood = 0
            cbad = 0
            Me.Show()
        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
            MsgBox("Sorry you are out of time! Please Try again!")
 
            cgood = 0
            cbad = 0
 
 
        End If
 
    End Sub
проблема которая осталась,после 3 верных ответов я получаю нужный мессаж,но идет продолжение всплывание инпут бокса + после каждого нажатия "гуд джоб",что в принципе верно исходя того,что кантер более 3 ответов.. вот и я хочу остановить работу,после 3 верных сообщение + вывод обратно на форму
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 16:15 17
Цикл продолжает вызывать функцию
VB.NET
1
2
3
4
For i As Integer = 0 To counter - 1
Res_txt = getanswer(i)
'.....
Next i
Зря вы в функции проверки сделали вывод сообщения.

В цикле нужно сделать прирывание после достижения 3х правильных ответов.
1
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 16:21  [ТС] 18
спасибо! как именно можно реализовать это прерывание? гугл не помогает
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
15.11.2015, 16:25 19
Цитата Сообщение от slavikod Посмотреть сообщение
как именно можно реализовать это прерывание?
VB.NET
1
End Sub
Я же писал код выше.
0
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 45
15.11.2015, 16:52  [ТС] 20
проблема в том,что это надо открывать отдельный саб
'End Sub' must be preceded by a matching 'Sub'.
то есть как для кнопки и т п
0
15.11.2015, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2015, 16:52
Помогаю со студенческими работами здесь

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

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

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

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


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

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