Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/83: Рейтинг темы: голосов - 83, средняя оценка - 4.67
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414

Как написать программу тестирования

10.08.2010, 16:43. Показов 16124. Ответов 62

Студворк — интернет-сервис помощи студентам
Добрый день! Решил писать тестер:учитель дал интересную задачку, но вот не как не могу разобраться! интерфейс уже сделал. На форме лежит Panel, а на панели Label(для вывода вопроса на экран), RadioButton(для ответа "да", "нет") и отдельно всего выше перечисленного кнопка "Следующий вопрос"(для переключения на след вопрос). Теперь вопрос:как написать код чтобы всё работало, но при этом надо чтобы без выбранного ответа да нет была кнопка" Следующий вопрос" отключена и на ответ да присваивалось значение "+", а для нет знач "-". и чтобы можно было выгрузить это на другую форму в компонент Memo. Для меня главное чтобы бы реально действенный, рабочий код, а как его сделать напишите и с помощью каких команд или файлов(.cpp, юрб и т.д.). Заранее спасибо Если кто то решал уже подобную задачу то киньте ссылку пожалуйста, буду сильно благодарен
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.08.2010, 16:43
Ответы с готовыми решениями:

Объединить программу тестирования и программу создания тестов
Ребят нужна помощь у меня 2 программы одна для тестирования, другая для создания тестов. Нужно сделать так чтобы в интерфейсе где...

Написать программу тестирования с возможностью редактирования тестов
Всем привет. Есть такой вопрос: нужно сделать тест (тестов может быть много) , этот тест должен хранится либо в файле, либо в БД. При всем...

Как написать программу для тестирования?
Как написать программу для тестирования. в программе должно быть 20 вопросов по 4 варианта ответа. Я новичок в программировании ...

62
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
10.08.2010, 21:49  [ТС]
Студворк — интернет-сервис помощи студентам
C++
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
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 const int size1=58;
 N=size1;
 const char *array[size1]={
 "1. Трудно ли тебе держаться на одном уровне со всем классом?",
...
"58. Дрожит ли слегка твоя рука, когда учитель просит сделать задание на доске перед всем классом?"
 };
    ShowMessage("Проверьте клавиши Caps Lock и Язык ввода языка!");
 PasswordDlg->ShowModal();
   if(PasswordDlg->Tag==1){
  Form1->BorderStyle=bsSizeable;
  Form1->Constraints->MinHeight=600;
  Form1->Constraints->MinWidth=800;
  Form1->Constraints->MaxHeight=0;
  Form1->Constraints->MaxWidth=0;
   Button2->Visible=False;
 N6->Visible=True;
 N6->Enabled=False;
 N2->Visible=True;
 N1->Visible=True;
 N2->Visible=True;
 N3->Visible=True;
 N5->Visible=True;
Panel1->Visible=True;
   Button1->Visible=True;
   Button3->Visible=False;
 ShowMessage("Внимание тест в бета версии не имеет клавиши возврата к предыдущему вопросу");
  for( i=55;i<N;){
 
   Label1->Caption=array[i];
  Application->ProcessMessages();
  if(i==57){Button1->Caption="Завершить тест";}
 
  }
  }
  else{MessageBox(NULL,"Пароль введен не верно!","Ошибка",MB_OK);
        }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 i++;
 RadioButton1->Checked = false;
 RadioButton2->Checked = false;
}
вот такой код переключает но если надо закрыть прогу то ничего не получится пока не будет 58 вопрос
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.08.2010, 21:52
Кстати переменная i объявленна в одном месте но используешь её в разных функциях тобишь в разных областях видимости. Внимание вопрос как у тебя твоя переменная объявленна в однойфункции видится в другой?
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
10.08.2010, 22:02  [ТС]
щас кину листинг и увидишь!

Добавлено через 5 минут
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Gen.h"
#include "PassWord.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int N,k, i;
AnsiString f1;
extern label1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  Label1->Font->Size=15;
  Label1->Font->Color=clBlack;
  Button3->Top=0;
  Button3->Left=0;
  Button2->Top=42;
  Panel1->Visible=False;
  Button1->Visible=False;
  N6->Visible=False;
  N1->Visible=False;
  N2->Visible=False;
  N5->Visible=False;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N7Click(TObject *Sender)
{
 
 OKRightDlg->ShowModal();
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
 AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N8Click(TObject *Sender)
{
 Form2->ShowModal();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::N6Click(TObject *Sender)
{
 Form3->ShowModal();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 const int size1=58;
 N=size1;
 const char *array[size1]={
 "1. Трудно ли тебе держаться на одном уровне со всем классом?",
...
 "58. Дрожит ли слегка твоя рука, когда учитель просит сделать задание на доске перед всем классом?"
 };
    ShowMessage("Проверьте клавиши Caps Lock и Язык ввода языка!");
 PasswordDlg->ShowModal();
   if(PasswordDlg->Tag==1){
  Form1->BorderStyle=bsSizeable;
  Form1->Constraints->MinHeight=600;
  Form1->Constraints->MinWidth=800;
  Form1->Constraints->MaxHeight=0;
  Form1->Constraints->MaxWidth=0;
   Button2->Visible=False;
 N6->Visible=True;
 N6->Enabled=False;
 N2->Visible=True;
 N1->Visible=True;
 N2->Visible=True;
 N3->Visible=True;
 N5->Visible=True;
Panel1->Visible=True;
   Button1->Visible=True;
   Button3->Visible=False;
 ShowMessage("Внимание тест в бета версии не имеет клавиши возврата к предыдущему вопросу");
  for( i=55;i<N;){
 
   Label1->Caption=array[i];
  Application->ProcessMessages();
  if(i==57){Button1->Caption="Завершить тест";}
 
  if(i==57 || (RadioButton1->Checked != true && RadioButton2->Checked != true)){
  N6->Enabled=True;     // это дорабатываю!
}
  }
  }
  else{MessageBox(NULL,"Пароль введен не верно!","Ошибка",MB_OK);
        }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 i++;
 RadioButton1->Checked = false;
 RadioButton2->Checked = false;
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.08.2010, 22:10
Вижу что объявил ты глобально

Добавлено через 1 минуту
Мне вот интересно узнать у тебя на 2-х вопросах работает нормально?
Это раз почему ты цикл начал с 55, а не с 0
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
10.08.2010, 22:16  [ТС]
просто сейчас я пишу код что будет выводиться после окончания теста! и для отладки удобно не весь тест проходить
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.08.2010, 22:19
По пробуй на один вопрос, как он у тебя получится?
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
10.08.2010, 22:24  [ТС]
ну смотри сейчас я пока что сделал так сказать как работает а завтра я уже буду сидеть над выводом результатов соответственно подсчетов! до завтра
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.08.2010, 22:43
Я бы тебе советовал твою переменную i объявить не глобально а в классе, так будет лутше.
А на другой форме когда будешь подсчитывать количество ответов, перменную эту будешь вызывать через родителя.
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
11.08.2010, 10:31  [ТС]
Почему нельзя вот таким образом сложить строку?
C++
1
Form3->Memo1->Lines->Add=ans[i] + " " + template_ans[i];
выходит ошибка:
[BCC32 Error] Gen.cpp(209): E2085 Invalid pointer addition
как лучше складывать строку! Sasha еще просьба покажи как объявить переменную в классе
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
11.08.2010, 10:47
crashc, для конкатенации строки оператором "+" нужно предварительно согласовать типы.
Все складываемые части должны иметь тип String
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
11.08.2010, 11:22  [ТС]
ну у меня оба массива объявлены как
C++
1
const char *
тогда как в этом случае сделать?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
11.08.2010, 11:28
crashc, привести к типу String. Например:
C++
1
2
char str[] = "World";
Button1->Caption = "Hello " + String(str);
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
11.08.2010, 22:18
Цитата Сообщение от crashc Посмотреть сообщение
как лучше складывать строку! Sasha еще просьба покажи как объявить переменную в классе
показываю
C++
1
2
public: 
 int i;
1
Мы все БОЛЬШАЯ программа
 Аватар для bond95
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
11.08.2010, 22:47
crashc, если переменная будет использоваться только этим классом то тогда лучше сделать так:
C++
1
2
private: 
 int i;
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
11.08.2010, 22:57
Вот небольшой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                    class Test
                    {
                    int count;  //Переменная видимая только внутри класса (также можно сделать как подсказал bond95)
                       public:  
                       int x,y,z;  //Обьявляем переменные
                       String Name;
                       Test()  //Область инициализации
                       {
                          x=30;   //Присваиваем переменным значения
                          y=25;
                          z=13;
                          Name="Djedi";
                       }
                    };
Теперь пример использования:
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Test *t=new Test;  //Создаем обьект
ShowMessage(t->x);  //Показываем переменную x
}
//---------------------------------------------------------------------------
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
12.08.2010, 08:45  [ТС]
Спасибо за показ переменной! теперь другой вопрос: как подсчитать сумму совпадений на правильный ответ в вопросах 2, 3, 7, 12, 16, 21, 23, 26, 28, 46, 47, 48, 49, 50, 51, 52, 53, 54. 55, 56, 57, 58; при этом кол-во совпадений должны быть записано в одну переменную
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.08.2010, 09:27
Заводишь переменную b обнуляешь её, затем затем пишешь так
C++
1
2
3
4
5
6
7
8
9
if (i==2)&&(Radiobutton1->Checked)
{
b++;
}
if (i==3)&&(Radiobutton1->Checked)
 
{
b++;
}
Добавлено через 3 минуты
Ну а в конце подсчитываешь чему равна твоя переменная b, это и будет количество положительных ответов
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
12.08.2010, 09:32  [ТС]
ммм я не много не это имел ввиду! смотри у меня есть предположим шаблон ответов и мне надо посчитать среди вот этих вопросов 2, 3, 7, 12, 16, 21, 23, 26, 28, 46, 47, 48, 49, 50, 51, 52, 53, 54. 55, 56, 57, 58 мне надо посчитать сколько же совпало с шаблоном ответов и еще вопрос это снова в цикле делать?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.08.2010, 09:39
Шаблон ответов? это ты что будешь заранее знать, что к примеру на второй вопрос надо было отвечать да, а у тебя в шаблоне стоит нет, или как?
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
12.08.2010, 09:41  [ТС]
ну вот смотри! дан шаблон ответов и надо сравнить с ответом человека-> мы будем выводить результат теста который там получился! надо просто подсчитать сколько ответов совпало с этим шаблоном, а сколько нет. по тем скажем номерам вопросов которые я написал, хотя впрочем без разницы по каким главное чтобы было понятно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2010, 09:41

Как написать программу для тестирования знаний
Система тестирования знаний. Дан текстовый файл с вопросами и верными ответами. Ввести Ф.И.О тестируемого(или выбрать из готового...

Как написать программу тестирования, где вопросы и ответы хранятся в MSSQL SERVER2008R2
Как написать про-му тестирования на ASP.NET (C#) MSSQL SERVER2008R2-база данных с вопросами и ответами,?

Написать программу тестирования
Всем привет.Задумал написать программу для тестирования , хотел бы кое-что узнать: -Есть ли какие-нибудь гайды,faq или прочее? -С чего...

Написать программу тестирования
Ребят помогите плиз!!!!! нужна программа... так чтобы не первой странице было название школы название работы чья работа и внизу &quot;для...

Написать программу тестирования
Помогите пожалуйста написать программу, точнее тест из 10-20 вопросов. при работе она должна выбрать случайным образом 5 вопросов,без...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru