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

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

10.08.2010, 16:43. Показов 15594. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru