Кабардино-Балкарский государственный университет
Опубликован: 11.11.2008 | Доступ: свободный | Студентов: 7295 / 2168 | Оценка: 4.16 / 3.99 | Длительность: 04:36:00
Темы: Программирование, Образование
Теги:
Дополнительный материал 3:
Тексты программ на Паскале для решения задач оценивания тестирования
Задача 5.
program P5; uses crt; var a:array[1..50,1..50] of real; k,n,m:integer; z:array[1..50] of integer; c,y:array[1..50] of real; pk,min_8:real; procedure minmax(jj:integer;var min,max:real); var i:integer; begin min:= a[1,jj]; max:=a[1,jj]; for i:=2 to n do if (a[i,jj]>max) then max:=a[i,jj] else if (a[i,jj]<min) then min:=a[i,jj]; end; function SA_8(jj:integer):real; var s:real; i:integer; begin s:=0; SA_8:=0; for i:=1 to n do s:=s+a[i,jj]; if (n<>0) then SA_8:=s/n; end; procedure Input_8; 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('Введите количество групп'); write('k='); readln(k); for i:=1 to m do z[i]:=1; end; procedure Output_8; var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write(a[i][j]:6:2,' '); writeln; end; end; procedure CheckAnsw; var i,j:integer; min,max,sa,s:real; begin for j:=1 to m do begin minmax(j,min,max); for i:=1 to n do begin a[i,j]:=(a[i,j]-min)/(max-min); if (z[j]=-1) then a[i,j]:=1-a[i,j] end; end; for j:=1 to m do begin sa:=SA_8(j); s:=0; for i:=1 to n do s:=s+sqr(a[i,j]-sa); if (n>1) then c[j]:=sqrt(s/(n-1)) else c[j]:=0; end; for i:=1 to n do begin s:=0; for j:=1 to m do s:=s+a[i,j]*c[j]; y[i]:=s; end; min:= y[1]; max:=y[1]; for i:=2 to n do if (y[i]>max) then max:=y[i] else if (y[i]<min) then min:=y[i]; pk:=max-min; min_8:=min; if (k>1) then pk:=pk/k; end; procedure PrintResult; var i:integer; kk:integer; begin writeln('Значения интегрального показателя и соотв класс :'); for i:=1 to m do begin write(y[i]:8:2); kk:=0; if (pk>0) then begin kk:=trunc((y[i]-min_8)/pk) ; if (Frac((y[i]-min_8)/pk)>0.0006) then inc(kk); end; writeln(' класс #',kk) ; end; end; begin clrscr; Input_8; clrscr; Output_8; CheckAnsw; PrintResult; readkey; end.
Задача 6.
program P6; uses crt; var a:array[1..50,1..50] of real; n,m:integer; b:array[1..50] of real; function SA_9(jj:integer):real; var s:real; i:integer; begin s:=0; SA_9:=0; for i:=1 to n do s:=s+a[i,jj]; if (n<>0) then SA_9:=s/n; end; procedure Input_9; 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; end; procedure Output_9; var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write(a[i][j]:6:2,' '); writeln; end; end; procedure CheckAnsw; var i,j:integer; s,tmp:real; begin for i:=1 to n do begin s:=0; for j:=1 to m do s:=s+a[i,j]; b[i]:=s; end; for i:=1 to n-1 do for j:=i+1 to n do if (b[i]>b[j]) then begin tmp:=b[i]; b[j]:=b[i]; b[i]:=tmp end; end; procedure PrintResult; var i:integer; kk:integer; const b_koef=0.6; begin writeln('Значения интегрального показателя и соотв группа :'); for i:=1 to m do begin write(b[i]:8:2); if (b[i]>=b[1]+b_koef*(b[n]-b[i])) then kk:=1 else if (b[i]<=b[1]+(1-b_koef)*(b[n]-b[i])) then kk:=3 else kk:=2; writeln(' группа #',kk) ; end; end; begin clrscr; Input_9; clrscr; Output_9; CheckAnsw; PrintResult; readkey; end.
Задача 7.
program P7; uses crt; var n:integer; x:array[1..50] of real; dmax_10,min_10,max_10,sx,w_10:real; procedure minmax(var min,max:real); var i:integer; begin min:= x[1]; max:=x[1]; for i:=2 to n do if (x[i]>max) then max:=x[i] else if (x[i]<min) then min:=x[i]; end; function SA_10:real; var s:real; i:integer; begin s:=0; SA_10:=0; for i:=1 to n do s:=s+x[i]; if (n<>0) then SA_10:=s/n; end; procedure Input_10; var i:integer; begin write('Количество тестированных n='); readln(n); writeln('Введите результаты тестирования'); for i:=1 to n do begin write('х[',i,']='); readln(x[i]); end; end; procedure Output_10; var i:integer; begin for i:=1 to n do write(x[i]:6:2,' '); writeln; end; procedure CheckAnsw; begin sx:=SA_10; minmax(min_10,max_10); dmax_10:=abs(min_10-sx); if (abs(max_10-sx)>dmax_10) then dmax_10:=abs(max_10-sx); if (sx<>0) then w_10:=dmax_10/sx; end; procedure PrintResult; begin writeln('Средняя велечина :',sx:8:2); writeln('Наибольшее значение :',max_10:8:2); writeln('Наимньшее значение :',min_10:8:2); writeln('Наибольшее отклонение в группе :',dmax_10:8:2); writeln('Относительное отклонение в группе :',w_10:8:2); end; begin clrscr; Input_10; clrscr; Output_10; CheckAnsw; PrintResult; readkey; end.