Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
icslab
0 / 0 / 0
Регистрация: 12.10.2008
Сообщений: 1
1

тест на VB c выбором правильного ответа

15.10.2008, 14:52. Просмотров 6497. Ответов 15
Метки нет (Все метки)

Есть тест на VB c выбором правильного ответа и подсчетом баллов. Как сделать что бы
каждый вопрос был на отдельной странице?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2008, 14:52
Ответы с готовыми решениями:

Как создать тест без правильного ответа, для сбора информации(ответа)
Как создать тест без правильного ответа, для сбора информации(ответа). К примеру мне нужно создать...

Тест с вписыванием правильного ответа
Может у кого нить есть исходники) желательно с подсчётом оценки:cry:

Проверка Правильного Ответа
Как мне вытащить ячейку => 1 из массива по ячейке => 10 foreach ($_SESSION ] as $key =>...

Выбор правильного ответа
/*делаю код который мог бы при нажатии на определённый элемент менять его цвет, и тем самым...

Вывод правильного-неправильного ответа
В продолжение темы http://www.cyberforum.ru/html/thread712252.html Еще один вопросик: как сделать...

15
Vourhey
Почетный модератор
6497 / 2272 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
15.10.2008, 15:26 2
Телепаты на каникулах.
0
AloneHere
7 / 6 / 5
Регистрация: 18.11.2008
Сообщений: 43
18.11.2008, 23:35 3
Проще простого, но это нужно делать очень долго.
При правильном ответе, добавляешь в невидимый лабл (заранее создан на какой-то форме). А в конце выводишь в лабл на последней форме значение с невидимого лабла. Самый простой способ, который я знаю. А на счет глобальных переменных - хз.
0
Krevetina
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 4
08.09.2009, 16:10 4
Классный способ!
Кстати, можно в лейблах написать не число баллов, а комментарии!
0
08.09.2009, 16:10
Harvy
2 / 2 / 0
Регистрация: 29.04.2009
Сообщений: 18
25.09.2009, 18:00 5
Я бы прописал все так
Visual Basic
1
2
3
4
5
6
7
8
If Option1(i).Value = True then 
                                           bal = bal+1
                                             frame1.Visible = False
                                             frame2.Visible = True
   Else
   frame1.Visible = False
   frame2.Visible = True
End If
где Option1(1) - это правильный результат.(i) - это индекс кнопки с правильным ответом.
Создал бы количество фрэймов равное количеству попросов.
bal - это переменная с количеством баллов.
Ну и так далее...
0
Nicon
26.09.2009, 18:07 6
Цитата Сообщение от Harvy Посмотреть сообщение
Я бы прописал все так
Visual Basic
1
2
3
4
5
6
7
8
If Option1(i).Value = True then 
                                           bal = bal+1
                                             frame1.Visible = False
                                             frame2.Visible = True
   Else
   frame1.Visible = False
   frame2.Visible = True
End If
где Option1(1) - это правильный результат.(i) - это индекс кнопки с правильным ответом.
Создал бы количество фрэймов равное количеству попросов.
bal - это переменная с количеством баллов.
Ну и так далее...
в твоем случае менятся ничего не будет ибо условия the и else одинаковые, лучше будет если фрейм генерился автоматом так будет более правильно, но кода естественно больше. Ет не предъява просто чет навеяло ))
Harvy
2 / 2 / 0
Регистрация: 29.04.2009
Сообщений: 18
27.09.2009, 00:13 7
тут фишка в том что при правильном ответе будет прибавляться бал в условии then... А в else этого не будет.
0
Krevetina
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 4
27.09.2009, 11:11 8
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Privat sub Form1.load()
Dim 1 As Integer
1=0
End Sub
 
Privat Sub CommandButton1.click()
If OptionButton1.value Then
1=1+1
Else 1= 1+0
End If
End Sub
Вот так-то
0
БурундукЪ
9569 / 2577 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
28.09.2009, 10:19 9
Krevetina, это что?
0
Toxa33rus
3815 / 879 / 122
Регистрация: 16.04.2009
Сообщений: 1,768
28.09.2009, 15:26 10
Цитата Сообщение от CyberБурундукЪ Посмотреть сообщение
Krevetina, это что?
У меня что-то со зрением или там в качестве имени переменной взята голая единица? Потом единице присваивается ноль Интересно, а этот ноль это число или тоже переменная.

Не по теме:

Вообще не понимаю зачем апнули годовалую тему

0
Krevetina
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 4
29.09.2009, 08:21 11
Цитата Сообщение от Toxa33rus Посмотреть сообщение
У меня что-то со зрением или там в качестве имени переменной взята голая единица? Потом единице присваивается ноль Интересно, а этот ноль это число или тоже переменная.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Privat sub Form1.load()
Dim bal As Integer
bal=0
End Sub
 
Privat Sub CommandButton1.click()
If OptionButton1.value Then
bal=bal+1
Else bal= bal+0
End If
End Sub
Privat Sub CommandButton2.click()
Label1.caption= "ты получил"bal"правильных ответов"
End Sub
0
БурундукЪ
9569 / 2577 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
29.09.2009, 09:20 12
Krevetina, все равно не намного легче
bal не переменная формы, а переменная процедур, в данном случае. чтобы оно стало переменной формы надо так заделать:
и нащет елзей-ифов синтаксис хромает
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim bal As Integer
 
Privat sub Form1.load()
bal=0
End Sub
 
Privat Sub CommandButton1.click()
If OptionButton1.value Then
   bal=bal+1
Else
   bal= bal+0
End If
End Sub
 
Privat Sub CommandButton2.click()
Label1.caption= "ты получил"bal"правильных ответов"
End Sub
Добавлено через 2 минуты
кстати, мона убрать елзю и так сделать

Privat Sub CommandButton1.click()
bal=bal+OptionButton1.value
End Sub

Добавлено через 2 минуты
а еще в лабеле у тя ошибгу выдаст
т.е. пределай строчку 16 так
Label1.caption= "ты получил " & bal & " правильных ответов"
0
Nicon
29.09.2009, 23:15 13
Цитата Сообщение от Toxa33rus Посмотреть сообщение
У меня что-то со зрением или там в качестве имени переменной взята голая единица? Потом единице присваивается ноль Интересно, а этот ноль это число или тоже переменная.

Не по теме:

Вообще не понимаю зачем апнули годовалую тему

Думаю будет лучше если нное колличество вопросов прописать,записать их в переменную, а отображать их используя randomize timer.
На делфи я это делал а вот с VB пока не пробовал, может кто попробует?

Delphi
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
unit uMain;
 
interface
 
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls, Menus, IniFiles;
 
type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   Test1: TMenuItem;
   Restart1: TMenuItem;
   Quit1: TMenuItem;
   ListBox1: TListBox;
   Panel2: TPanel;
   Label1: TLabel;
   ListBox2: TListBox;
   procedure ListBox1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   qs: TIniFile;
   order: tStringList;
   current_question: integer;
   procedure AddValue(name: string; value: integer);
   procedure ProcessAnswer(answer: string);
   function GetAnswerText(answer: string): string;
   procedure PrepareQuestions;
   procedure AskQuestion(n: integer);
   procedure ProcessResults;
 public
   { Public declarations }
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
{ TForm1 }
 
procedure TForm1.AddValue(name: string; value: integer);
var
 v: integer;
begin
 v := StrToIntDef(ListBox2.Items.Values[name], 0);
 ListBox2.Items.Values[name] := IntToStr(v + value);
end;
 
procedure TForm1.AskQuestion(n: integer);
var
 i, j: integer;
begin
 Label1.Caption := qs.ReadString(order[n], 'question', '???');
 j := qs.ReadInteger(order[n], 'answers', 0);
 ListBox1.Clear;
 if j > 0 then
   for i := 1 to j do
     ListBox1.Items.Add(GetAnswerText(qs.ReadString(order[n], 'answer' + intToStr(i), '???')));
 ListBox1.ItemIndex := -1;
end;
 
function TForm1.GetAnswerText(answer: string): string;
var
 n: integer;
begin
 n := Pos('^', answer);
 result := Copy(answer, 1, n - 1);
end;
 
procedure TForm1.PrepareQuestions;
var
 i, n: integer;
 s: string;
begin
 if qs = nil
   then qs := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'test.ini');
 if order = nil
   then order := TStringList.Create;
 qs.UpdateFile;
 {order.CommaText}s := qs.ReadString('index', 'questions', '');
 order.CommaText := s;
 n := order.Count;
 if n > 0 then
   for i := 0 to n * 2 do
     order.Exchange(random(n), random(n));
 current_question := 0;
 AskQuestion(current_question);
end;
 
procedure TForm1.ProcessAnswer(answer: string);
var
 l: TStringList;
 i, n: integer;
begin
 l := TStringList.Create;
 n := Pos('^', answer);
 l.CommaText := Copy(answer, n + 1, Length(answer));
 n := l.Count - 1;
 for i := 0 to n do begin
   AddValue(l.Names[i], StrToIntDef(l.Values[l.Names[i]], 0));
 end;
end;
 
procedure TForm1.ProcessResults;
begin
 ShowMessage('Done');
 ListBox2.Clear;
end;
 
procedure TForm1.ListBox1Click(Sender: TObject);
var
 a: string;
 n: integer;
begin
 n := ListBox1.ItemIndex + 1;
 a := qs.ReadString(order[current_question], 'answer' + IntToStr(n), '^');
 ProcessAnswer(a);
 if current_question < (order.Count - 1)
   then begin
     current_question := current_question + 1;
     AskQuestion(current_question);
     end
   else begin
     ProcessResults;
     PrepareQuestions;
     end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 PrepareQuestions;
end;
 
initialization
 Randomize;
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
[index]
questions = q_1 //и т.д.
 
[q_1]
question=Вопрос
answers=7 //колличество ответов
answer1=Ответ.^axe=+10 herblore=+10
answer2=Ответ.^archery=+10 skining=+10
answer3=Ответ.^herblore=+10 cooking=+5
answer4=Ответ.^barter=+10 persuation =+10
answer5=Ответ.^blades=+10 parry=+5 shield=+5
answer6=Ответ.^crafting=+10 unarmed=+10
answer7=Ответ^persuation=+10 perfomance=+10
RCF
5 / 5 / 4
Регистрация: 24.03.2010
Сообщений: 209
Записей в блоге: 1
29.03.2010, 13:30 14
Цитата Сообщение от Krevetina Посмотреть сообщение
Else 1= 1+0
зачем если результ НЕ верный к 1 прибавлять ноль???? понимаю если ВЕРНО то: prav = prav +1

Цитата Сообщение от AloneHere Посмотреть сообщение
А на счет глобальных переменных - хз
добавь модуль и там пиши:

Public prav

он и будет глабальным. потом можешь вызвать его с любой формы...
0
Zhumadilov
2 / 2 / 0
Регистрация: 22.10.2009
Сообщений: 126
24.04.2010, 08:22 15
[QUOTE=Harvy;280397]Я бы прописал все так
Visual Basic
1
2
3
4
5
6
7
8
If Option1(i).Value = True then 
                                           bal = bal+1
                                             frame1.Visible = False
                                             frame2.Visible = True
   Else
   frame1.Visible = False
   frame2.Visible = True
End If
Так любой может написать.а как ты (i)будеш находить
0
RCF
5 / 5 / 4
Регистрация: 24.03.2010
Сообщений: 209
Записей в блоге: 1
26.04.2010, 06:22 16
Цитата Сообщение от Zhumadilov Посмотреть сообщение
а как ты (i)будеш находить
i - это индекс массива из Option, т.е. кидаешь на форму 1 ЭУ Option1. делаешь необхдимое количество копий. получается массив. потом как пользоваель выбирает номер ответа, а соответственно получаеся что он выбирает индекс (i).
Будут вопросы, пиши.
0
26.04.2010, 06:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2010, 06:22

Перезапуск программы до правильного ответа
Здравствуйте. Возможно ли реализовать следующее (см. картинку). 1. Если пользователь отвечает...

Поиск слов, и выявление правильного ответа
Два робота ведут диалог (слова одного робота чередуются со словами другого). Первый может...

Изменение цвета правильного/неправильного ответа JS
Всем привет. Имеется страничка с тестом на JavaScript. Так как я не очень хорошо знаю это язык,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru