// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
procedure View(fams:array of string; balls:array[,] of integer);
begin
for var i:=0 to fams.Length-1 do begin
Write(fams[i],': ');
balls.Row(i).Println
end
end;
begin
var n:=ReadlnInteger('Количество студентов:');
var m:=ReadlnInteger('Количество оценок у студента:');
var afam:=new string[n];
var aball:=new integer[n,m];
for var i:=0 to n-1 do begin
afam[i]:=ReadlnString('Студент '+(i+1)+':');
Write('оценки студента: ');
for var j:=0 to m-2 do Read(aball[i,j]);
Readln(aball[i,m-1]);
end;
Writeln('*** Принятые сведения ***');
View(afam,aball);
var s:=aball.Rows.Select(x->x.All(y->y=5)).Numerate
.Where(x->not x[1]).Select(x->x[0]-1).ToArray;
var n1:=s.Count;
if n1>0 then begin
var t:=new string[n1];
var t1:=new integer[n1,m];
for var i:=0 to n1-1 do begin
t[i]:=afam[s[i]];
for var j:=0 to m-1 do t1[i,j]:=aball[s[i],j]
end;
afam:=Copy(t);
aball:=copy(t1);
Writeln('*** После удаления отличников ***');
View(afam,aball);
end
end.
Пример
Количество студентов: 5
Количество оценок у студента: 3
Студент 1: Иванов И.И.
оценки студента: 5 4 5
Студент 2: Петров П.П.
оценки студента: 5 5 5
Студент 3: Сидорова Т.С.
оценки студента: 5 5 5
Студент 4: Козлова К.К.
оценки студента: 4 4 3
Студент 5: Макаров М.М.
оценки студента: 4 5 4
*** Принятые сведения ***
Иванов И.И.: 5 4 5
Петров П.П.: 5 5 5
Сидорова Т.С.: 5 5 5
Козлова К.К.: 4 4 3
Макаров М.М.: 4 5 4
*** После удаления отличников ***
Иванов И.И.: 5 4 5
Козлова К.К.: 4 4 3
Макаров М.М.: 4 5 4