// PascalABC.NET 3.2, сборка 1363 от 17.12.2016 // Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк в матрице:'); var n:=ReadInteger('Количество столбцов в матрице:'); Writeln('*** Исходная матрица [',m,'x',n,'] ***'); var a:=MatrRandom(m,n,-50,50); a.Println(4); Writeln(4*a.ColCount*'-'); var q:=a.Cols.Select(x->x.First<x.Last).ToArray; var k:=q.Where(r->r).Count; Writeln('*** Результирующая матрица [',m,'x',k,'] ***'); var b:=MatrFill(m,k,0); var l:=0; for var j:=0 to n-1 do if q[j] then begin for var i:=0 to m-1 do b[i,l]:=a[i,j]; l+=1 end; b.Println(4) end.
Для удобства перенёс таблицу из вопроса в Excel (см. приложение №1)
Вопрос №1: Определите, какое минимальное количество учителей физкультуры требуется при таком расписании. Почему? ответ: 3. Так как на втором уроке одновременно идут 3 занятия у классов: 9А, 10А, 10Б.
Вопрос №2: Найдите один из вариантов расписания, при котором можно обойтись двумя учителями физкультуры, совмещать уроки нельзя. ответ: см. приложение (картинка №2)
Вопрос №3: В школе три учителя физкультуры: Иванов, Петров, Сидоров. Распределите между ними уроки в таблице так, чтобы ни у кого не было "окон" (пустых уроков). ответ: см. приложение (картинка №3)
Вопрос №4: Распределите между тремя учителями уроки так, чтобы нагрузка у всех была одинаковой. ответ: см. приложение (картинка №4)
Для удобства перенёс таблицу из вопроса в Excel (см. приложение №1)
Вопрос №1: Определите, какое минимальное количество учителей физкультуры требуется при таком расписании. Почему? ответ: 3. Так как на втором уроке одновременно идут 3 занятия у классов: 9А, 10А, 10Б.
Вопрос №2: Найдите один из вариантов расписания, при котором можно обойтись двумя учителями физкультуры, совмещать уроки нельзя. ответ: см. приложение (картинка №2)
Вопрос №3: В школе три учителя физкультуры: Иванов, Петров, Сидоров. Распределите между ними уроки в таблице так, чтобы ни у кого не было "окон" (пустых уроков). ответ: см. приложение (картинка №3)
Вопрос №4: Распределите между тремя учителями уроки так, чтобы нагрузка у всех была одинаковой. ответ: см. приложение (картинка №4)
// Внимание! Если программа не работает, обновите версию!
begin
var m:=ReadInteger('Количество строк в матрице:');
var n:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',m,'x',n,'] ***');
var a:=MatrRandom(m,n,-50,50);
a.Println(4); Writeln(4*a.ColCount*'-');
var q:=a.Cols.Select(x->x.First<x.Last).ToArray;
var k:=q.Where(r->r).Count;
Writeln('*** Результирующая матрица [',m,'x',k,'] ***');
var b:=MatrFill(m,k,0);
var l:=0;
for var j:=0 to n-1 do
if q[j] then begin
for var i:=0 to m-1 do b[i,l]:=a[i,j];
l+=1
end;
b.Println(4)
end.
Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 8
*** Исходная матрица [5x8] ***
15 -35 -11 -18 49 -32 31 -47
-21 -46 7 -48 3 24 -48 5
28 -46 36 -9 17 -32 -44 -10
-16 7 -14 40 13 30 50 -28
-8 35 -49 47 -31 30 18 20
*** Результирующая матрица [5x4] ***
-35 -18 -32 -47
-46 -48 24 5
-46 -9 -32 -10
7 40 30 -28
35 47 30 20