Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2007, 12:39   #1
dimitriy1987
Пользователь
 
Регистрация: 20.10.2007
Сообщений: 28
Восклицание Попал в тупик при создании теста

помогите пожалуйста! создал тест который берет вопросы с текстового файла. стал делать другой и попал в тупик! в 7-ом вопросе написан вопрос а ниже : если вы ответите да то переходите к 10вопросу. и как мне сделать что бы если я нажал да то появился 10й вопрос а если нет то продолжался 8,9 и т.д.... подскажите как...уже надо в среду сдавать эти тесты! очень прошу ПОМОГИТЕ
dimitriy1987 вне форума Ответить с цитированием
Старый 21.10.2007, 12:50   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

тупо пропусти два считанных из файла вопроса. В чем трабл-то? =)
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 21.10.2007, 13:47   #3
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

используй метку. и оператор безусловного перехода.
I like WPF
kommunist вне форума Ответить с цитированием
Старый 21.10.2007, 14:59   #4
dimitriy1987
Пользователь
 
Регистрация: 20.10.2007
Сообщений: 28
По умолчанию

Цитата:
Сообщение от kommunist Посмотреть сообщение
используй метку. и оператор безусловного перехода.
мне надо что бы препод на 7-ой вопрос из четырех вариантов выбрал если второй вариант то перескачил на 9 вопрос! как этосделать? напишите код
dimitriy1987 вне форума Ответить с цитированием
Старый 21.10.2007, 15:11   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

А как мы напишем?
Ваш код в студию! (мы не телепаты, я могу спокойно написать так: if varOtvet = 2 then Nextvopros := 10; и всё!)
zetrix вне форума Ответить с цитированием
Старый 21.10.2007, 16:46   #6
dimitriy1987
Пользователь
 
Регистрация: 20.10.2007
Сообщений: 28
По умолчанию

я первый тест делал вот так! но думаю что в таком коде нельзя сделать перескок через вопросы! я прав? тут на этом сайте нашел тест в котором забиты вопросы в форму! если не сможете в моём коде подсказать как сделайть перескок, сделайте перескок во вложенном тесте с любово вопроса на любой!



unit TestUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, UserID;

type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
GroupBox1: TGroupBox;
BitBtn1: TBitBtn;
Panel1: TPanel;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
balls : integer;
q_file, Log_File : TextFile;
five, four, three,
ans1mark, ans2mark : integer;
question, answere1, answere2, answere3,
answere4, tmp_q, result : string;
flag_end, flag_write : boolean;

implementation

{$R *.dfm}

procedure Read_next_q();
var
AYear, AMonth, ADay, Hour, Min, Sec, MSec: Word;
Data : string;
begin
if EOF(q_file) then
begin
flag_end := true;
if balls>=five then
result:='относитесь к группе "Автономных" ';
if (balls>=four)and(balls<five) then
result:='являетесь средним типом между автономными и зависимыми ';
if (balls<=three) then
result:='относитесь к группе "Зависимых" ';
showmessage('Вы '+#13#10+Result);

DecodeDate(Now, AYear, AMonth, ADay);
DecodeTime(Now, Hour, Min, Sec, MSec);
Data:=IntToStr(AYear)+'/'+IntToStr(AMonth)+'/'+IntToStr(ADay)+' '+IntToStr(Hour)+':'+IntToStr(Min)+ ':'+IntToStr(Sec)+' ';
writeln(Log_File, Data+Result+#13#10+#13#10);
closeFile(Log_File);

Form1.BitBtn1.Enabled:=false;

end
else
begin
Readln(q_file,tmp_q);
question:=tmp_q+#13#10;
Readln(q_file,tmp_q);
question:=question+tmp_q+#13#10;
Readln(q_file,tmp_q);
question:=question+tmp_q+#13#10;
Readln(q_file,answere1);
Readln(q_file,ans1mark);
Readln(q_file,answere2);
Readln(q_file,ans2mark);

Form1.Label1.Caption:=question;
Form1.RadioGroup1.Items[0]:=answere1;
Form1.RadioGroup1.Items[1]:=answere2;
end;
end;

procedure check_ans();
begin

if (Form1.RadioGroup1.ItemIndex=0)and( flag_end=false) then
balls:=balls+ans1mark;
if (Form1.RadioGroup1.ItemIndex=1)and( flag_end=false) then
balls:=balls+ans2mark;


Form1.RadioGroup1.ItemIndex:=-1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Left:=Screen.Width+100;
Form1.Top:=Screen.Height+100;
flag_end:=false;
AssignFile(q_file, 'q.txt');
Reset(q_file);
Readln(q_file,five);
Readln(q_file,four);
Readln(q_file,three);
Read_next_q;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Form1.RadioGroup1.ItemIndex<>-1 then
begin
check_ans;
Read_next_q;
end
else
showmessage('Выберите один из вариантов'+#13#10+'ответов и нажмите "Далее"!');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;

end.
Вложения
Тип файла: rar Тест 1.0.rar (20.3 Кб, 23 просмотров)
dimitriy1987 вне форума Ответить с цитированием
Старый 22.10.2007, 08:18   #7
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Слушай, код хоть и не идеален, но способен жить. Попробуй завести счетчик, который будет считать, какой вопрос сейчас идет и в зависимости от того, нужно будет тебе перескакивать через вопросы или нет, будешь наращивать переменную, которая будет повторять процедуру Read_next_q до определенного момента.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 22.10.2007, 11:52   #8
dimitriy1987
Пользователь
 
Регистрация: 20.10.2007
Сообщений: 28
По умолчанию

Понял... попробувал...не смог сделать.. вообще ниче не получается подскажите как написать этот код....пжлста!
dimitriy1987 вне форума Ответить с цитированием
Старый 22.10.2007, 12:21   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нда с таким подходом, извини, двойку тебе нуна по ИТ...
Чегоб не засунуть вопросы в файл и не считывать их оттуда по порядку? Или вы это еще не проходили?...

У тебя на каждый вопрос своя кнопка. так не поленись сделать еще одну кнопку "Да" которая б появлялась на седьмом вопросе. По нажатию которой бы вызывалась соответствующая процедура кнопки "Далее" для 10-го вопроса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2007, 00:50   #10
capslock
Новичок
Джуниор
 
Аватар для capslock
 
Регистрация: 23.10.2007
Сообщений: 2
По умолчанию

млин код писать лень, но я постораюсь обьяснить доступно(я бы зделал так): для каждого вопроса создать радиогруп и OnChange()'м делать доступными соответствующие по смыслу вопросы(ну например ответил на первый -> доступен второй и т.д., и проверяй на 7ом вопросе ответ и делай доступными либо блокируй вопросы 8 и 9), и конечно желательно текстом пояснить что ппри таком то условии вопросы 8 и 9 не нужны

Последний раз редактировалось capslock; 23.10.2007 в 00:54.
capslock вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен исходник прогаммы-теста Jurej_Red Софт 7 16.02.2011 19:57
Блин,пацаны помогите,нужна помощь,попал в тяжёлую ситуацию!!! steck Свободное общение 4 26.05.2007 08:28