Страница 1 из 1
Задачка на массивы и списки...
Добавлено: 08 май 2009, 18:54
Альбиша
Help me, please

200 учеников шести школ города (номера школ заданы) принимают участие в тестировании по математике. Правильные численные ответы к пяти предложенным задачам даны. О каждом ученике известно: фамилия, номер школы и пять ответов на задачи. Сведения об учениках не имеют определенной упорядоченности. Составить списки учеников по школам, расположив в каждом списке фамилии в порядке убывания количества решенных задач. Предусмотреть возможный ответ "не решил".
Re: Задачка на массивы и списки...
Добавлено: 11 май 2009, 10:47
dr.Jekill
Выкладывай наработки. Задавай конкретные вопросы
Re: Задачка на массивы и списки...
Добавлено: 20 май 2009, 20:41
Альбиша
Можно эту программку написать как-нибудь иначе, чтоб она была короче. Если можно, то напишите пожалуйста.
Код: Выделить всё
Program 1;
Const
No_1:=1; /номера школ/
No_2:=4;
No_3:=5;
No_4:=6;
No_5:=8;
No_6:=9;
N:=200; /кол-во учеников всего/
Var
Sp: array [1..n] of string [15]; /список фaмилий/
Sch: array [1..n] of integer; /список номеров школ/
Sp1: array [1..n] of string [15]; /список фамилий учеников 1-ой школы №1/
Sp2: array [1..n] of string [15];
Sp3: array [1..n] of string [15];
Sp4: array [1..n] of string [15];
Sp5: array [1..n] of string [15];
Sp6: array [1..n] of string [15];
K1: array [1..n] of integer; /кол-во решенных задач учеников 1-ой школы №1/
K2: array [1..n] of integer;
K3: array [1..n] of integer;
K4: array [1..n] of integer;
K5: array [1..n] of integer;
K6: array [1..n] of integer;
PO: array [1..5] of real; /правильные ответы/
OT: array [1..n, 1..5] of real; /ответы учеников/
x,i j,k,i1,i2,i3,i4,i5,i6,x1,x2,x3,x4,x5,x6: integer;
Begin
Writeln(' введите 5 правильных ответов');
For j:=1 to 5 do
Readln(PO[j]);
Writeln('vvedite',n,'familiy');
For i:=1 to n do
Readln(sp[i]);
Writeln(' введите номера школ');
For i:=1 to n do
Readln(sch[i]);
Writeln(' введите 5 ответов каждого из',N,'учеников');
For i:=1 to n do
For j:=1 to 5 do
Read(OT[i,j]);
Writeln('schola',No_1);
x1:=0; /количество учеников школы/
For i:=1 to n do
Begin
If sch[i]=No_1 then
Begin
x1:=x1+1;
i1:=x1;
sp1[i1]:=sp[i]; /переносим ученика из общего списка в список учеников 1-ой школы/
for j:=1 to 5 do
begin
if OT[i,j]=PO[j] then
k:=k+1;
end;
k1[i1]:=k;
end;
end;
x:=0; /число повторений обхода сортировки/
repeat
for i1:=1 to x1 do
begin
if k1[i1]<k1[i1+1] then
begin
k1[i1]:=k1[i1+1];
k1[i1+1]:=k1[i1];
sp1[i1]:=sp1[i1+1];
sp1[i1+1]:=sp1[i1];
x:=x+1;
end;
end;
until x=x1;
for i1:=1 to x1 do
writeln(sp1[i1]);
writeln('школа',No_2);
x2:=0;
....................................
далее как по первой школе, не стала набирать, так как практически то же самое