Кабардино-Балкарский государственный университет
Опубликован: 11.11.2008 | Доступ: свободный | Студентов: 7271 / 2153 | Оценка: 4.16 / 3.99 | Длительность: 04:36:00
Темы: Программирование, Образование
Теги:
Дополнительный материал 3:
Тексты программ на Паскале для решения задач оценивания тестирования
Задача 3.
program P3; uses crt; var a:array[1..100,1..100] of integer; n,m:integer; b,stud_bal,tru_ans_count:array[1..100] of integer; r,c,d,y,x,disp,std_otk:array[1..100] of real; Disp_all,Stand_otkl_all:real; procedure Input_6; var i,j:integer; begin write('Количество тестированных n='); readln(n); write('Длина теста m='); readln(m); writeln('Введите результаты тестирования'); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; writeln; writeln('Введите эталонные результаты'); for i:=1 to m do begin write('b[',i,']='); readln(b[i]); end; end; procedure Output_6; var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write(a[i][j]:6,' '); writeln; end; end; function SA_6:real; var s:real; i:integer; begin s:=0; SA_6:=0; for i:=1 to m do s:=s+disp[i]; if (m<>0) then SA_6:=s/m; end; function Dispersia_6:real; var s:real; i:integer; sa:real; begin sa:=SA_6; s:=0; for i:=1 to m do s:=s+sqrt(disp[i]); Dispersia_6:=abs((s-m*sqrt(sa))/(m-1)); end; procedure CheckAnsw; var i,k,j,s_tr,s_fl:integer; begin for i:=1 to n do begin k:=0; for j:=1 to m do if (a[i,j]=b[j]) then inc(k); stud_bal[i]:=k; end; for j:=1 to m do begin k:=0; s_tr:=0; s_fl:=0; for i:=1 to n do if (a[i,j]=b[j]) then begin inc(k); s_tr:= s_tr+stud_bal[i]; end else s_fl:=s_fl+stud_bal[i]; tru_ans_count[j]:=k; if (k<>0) then x[j]:=s_tr/k else x[j]:=0; if (k<>n) then y[j]:=s_fl/(n-k) else y[j]:=0; if (k<>0) then c[j]:=n/k else c[j]:=0; if (k<>n) then d[j]:= n/(n-k) else d[j]:=0; disp[j]:=c[j]*d[j]; std_otk[j]:=sqrt(disp[j]); end; Disp_all:=Dispersia_6; Stand_otkl_all:=sqrt(Dispersia_6) ; for j:=1 to m do if (Stand_otkl_all>0) then r[j]:=(x[j]-y[j])*Std_otk[j]/Stand_otkl_all else r[j]:=0; end; procedure PrintResult; var i:integer; begin writeln('Вектор весов выполнения :'); for i:=1 to m do write(c[i]:8:2); writeln; writeln; writeln('Вектор весов невыполнения :'); for i:=1 to m do write(d[i]:8:2); writeln; writeln; writeln('Дисперсии каждого задания :'); for i:=1 to m do write(disp[i]:8:2); writeln; writeln; writeln('Стандартное отклонение каждого задания :'); for i:=1 to m do write(std_otk[i]:8:2); writeln; writeln; writeln('Общая дисперсии по всему тесту:',Disp_all:8:2); writeln; writeln('Стандартное отклонение по всему тесту:',Stand_otkl_all:8:2); writeln; writeln('Коэффициенты корреляции: '); for i:=1 to m do begin write(r[i]:8:2); if (r[i]>0.3) then writeln(' Валидное.') else writeln(' Невалидное.') end; end; begin clrscr; Input_6; clrscr; Output_6; CheckAnsw; PrintResult; readkey; end.