Задачка на массивы и списки...

Ответить
Альбиша
Сообщения: 3
Зарегистрирован: 11 апр 2009, 16:12

Help me, please :(
200 учеников шести школ города (номера школ заданы) принимают участие в тестировании по математике. Правильные численные ответы к пяти предложенным задачам даны. О каждом ученике известно: фамилия, номер школы и пять ответов на задачи. Сведения об учениках не имеют определенной упорядоченности. Составить списки учеников по школам, расположив в каждом списке фамилии в порядке убывания количества решенных задач. Предусмотреть возможный ответ "не решил".
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Выкладывай наработки. Задавай конкретные вопросы
Нет религии выше истины
Альбиша
Сообщения: 3
Зарегистрирован: 11 апр 2009, 16:12

Можно эту программку написать как-нибудь иначе, чтоб она была короче. Если можно, то напишите пожалуйста.

Код: Выделить всё

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;
....................................
далее как по первой школе, не стала набирать, так как практически то же самое
Ответить