![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Вообщем есть исходник теста, я его уже подредактировал, только поверхностно. осталось пару штрихов и все. но штрихи эти я сам не осилю. поэтому и прошу помоши у форумчан.
Тест выкладываю архивом. смысл теста: есть 100(к примеру) вопросов которые записаны в файле(в данном случае файле баз данных). Следом за вопросом зписаны и варианты ответов. А затем цифра правильного ответа. Фрагмент этого файла: "Вопр_ОЭ/1 Какая сталь обыкновенного качества относится к кипящей? 1. Сталь не полностью раскисленная марганцем при выплавке, и содержащая не более 0,05% кремния. 2. Содержащая кремния от 0,05 до 0,17%. 3. Содержащая более 10 мл. водорода на 100 г. металла. end of question 1 end" и так далее. Сам тест считывает из этого файла в случайном порядке 20 вопросов. В конце выводится результат : "Вы набрали 20 балов из 20" и этот результат записывается в файл. Сейчас внимание!!кульминация!!) Нужно чтоб этот результат выводился не просто как сколько правильных ответов, а по следующей схеме: номер Вопроса - верно или не верно, и написан общий процент правильных ответов. Очень Нужно!!! Помогите!! Если сделаете все красиво финансово отблагадорю. Последний раз редактировалось dimi_87, 22.07.2008 в 21:41. |
#2
|
|||
|
|||
![]() Да сам справишься.
Смотри куда считываются эти 20 вопросов. Сделай там поле для хранения того правильно ли ответили. При ответе на вопрос заноси туда значение. в месте, где выводится результат бежишь циклом по массиву/списку и выводишь результат в файл, заодно считая процент. Все. |
#3
|
|||
|
|||
![]() спасибо дружище. но боюсь не поднять мне этого. я вообще учусь на кафедре сварочного производства) в школе изучал паскаль. делфи как то давно баловался(по книжке). вот на кафедре попросили тест сделать.
нашел исходник в инете. сделал что смог под себя. а дальше встал.... ![]() |
#4
|
|||
|
|||
![]() да кстати....dimkaant@yandex.ru это мыло на всякий случай.
|
#5
|
|||
|
|||
![]() Блин, форум ответ сожрал, скотина...
щаз повторю. |
#6
|
|||
|
|||
![]() Добавления помечены знаками // !!!
Массив для хранения инфы Код:
private { Private declarations } vse_voprosy:array[1..max_voprosov]of tvse_voprosy; ispol_voprosy:array[1..voprosov_v_teste] of integer; RightAnswers : Array [1..voprosov_v_teste] of Boolean; //!!! schitano_voprosov:integer; tek_vopros,nomer:integer; file_s_voprosami:text; otvety_na_voprosy:array[1..voprosov_v_teste] of boolean; Вывод результата: Код:
procedure tform1.zapis_v_data_base; function BoolToStr(AValue : Boolean) : String; begin If AValue Then Result := 'правильный' Else Result := 'неправильный'; end; var file_db:textfile; I : Integer; C : Integer; begin if fileexists(put_k_data_base+rasshirenie_file_data_base) then begin assignfile(file_db,put_k_data_base+rasshirenie_file_data_base); append(file_db); end else begin assignfile(file_db,put_k_data_base+rasshirenie_file_data_base); rewrite(file_db); end; writeln(file_db,'Имя '+student.name); writeln(file_db,'Фамилия '+student.familiya); writeln(file_db,'Организация '+student.group); writeln(file_db,'Дата '+datetostr(date)); writeln(file_db,'Время '+timetostr(time)); writeln(file_db,'Результат '+student.resultat); writeln(file_db,' '); writeln(file_db,'Расшифровка результата:'); C := 0; For I := 1 To voprosov_v_teste Do Begin writeln(file_db,'Вопрос № ' + IntToStr(I) + ' - Ответ ' + BoolToStr(RightAnswers[i])); If RightAnswers[i] Then Inc(C); End; writeln(file_db,'Всего '+IntToStr(Round(100*C/voprosov_v_teste))+'% правильных ответов'); writeln(file_db,' '); { flush(file_db);} closefile(file_db); end; Заполнение массива: Код:
procedure TForm1.OtvetgotovClick(Sender: TObject); var i:integer; begin for i:=1 to max_otvetov-1 do begin //n 200 if otvet.Text=vse_voprosy[nomer].otvety[i] then begin //n 201 RightAnswers[tek_vopros] := True; // !!! messagedlg('Ответ правильный',mtconfirmation,[mbok],0); otvety_na_voprosy[tek_vopros]:=true; tek_vopros:=tek_vopros+1; otvet.SetFocus; if tek_vopros=voprosov_v_teste+1 then begin //n 202 messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0); student.resultat:=inttostr(form1.resultat); form1.zapis_v_data_base; close; end; //k 202 form1.vivod_voprosa; exit; end; // k 201 end; // k 200 if not(otvety_na_voprosy[tek_vopros]) then begin //n 203 messagedlg('Ответ неправильный',mtconfirmation,[mbok],0); RightAnswers[tek_vopros] := False; // !!! otvety_na_voprosy[tek_vopros]:=false; tek_vopros:=tek_vopros+1; if tek_vopros=voprosov_v_teste+1 then begin //n 204 messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0); student.resultat:=inttostr(form1.resultat); form1.zapis_v_data_base; close; end; // k 204 form1.vivod_voprosa; end; // k 203 otvet.SetFocus; end; |
#7
|
|||
|
|||
![]() Собственно, я бы сделал покрасивее, не на массивах, а на списках.
Точнее, редактор вопросов у меня давно сделан, но все никак не сделаю саму тестилку. По задумке поддерживается любое кол-во вопросов с любым кол-вом ответов, причем могут быть вопросы как с одним правильным ответом, так и с несколькими. |
#8
|
|||
|
|||
![]() сПАсибо большое!!! щас попробую!!! как сделаю отпишусь
|
#9
|
|||
|
|||
![]() Ну, вообще-то, я проверил. Работает. Ты только в правльных местах вставь.
И эт-та... правильные вопросы перемешай ![]() |
#10
|
|||
|
|||
![]() Блин....ну ты красавчик!!!!!!!! работает!!
ты уж извиняй....у меня последний к тебе вопрос...что нужно прописать чтоб вот этот вот результат выводился на экран по окончанию тетса... |
#11
|
|||
|
|||
![]() Цитата:
Мэ-э-э... в процке вывода результата в файл собери все в одну строку, а потом его ShowMessage или MessageDlg. Или сбор повтори там, где у тебя выводится сообщение о конце теста. Собирать можно через #13#10 - это перевод строки. |
#12
|
|||
|
|||
![]() даааа......ладно щас попробую.....
|
#13
|
|||
|
|||
![]() не получается....ошибку выдает..может я не то делаю..
|
#14
|
|||
|
|||
![]() Скорее всего.
Ты где хочешь вывести это сообщение? |
#15
|
|||
|
|||
![]() там же где он говорит что тест закончен вы набрали столько то ответов
Последний раз редактировалось dimi_87, 22.07.2008 в 21:08. |