// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 procedure MatInput(a:array[,] of integer); begin Writeln('Вводите элементы матрицы построчно, в конце нажимая Enter'); for var i:=0 to Length(a,0)-1 do begin Write(i+1,': '); for var j:=0 to Length(a,1)-1 do Read(a[i,j]); end end;
procedure MatPrint(a:array[,] of integer); begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Print(a[i,j]); Writeln end end;
function IsEqual(a:array[,] of integer; j1,j2:integer; flag:array of boolean):boolean; // равны ли столбцы с индексами j1 и j2 begin if flag[j2]=False then begin Result:=True; for var i:=0 to Length(a,0)-1 do if a[i,j1]<>a[i,j2] then begin Result:=False; Break end; flag[j2]:=Result end end;
begin var n:=ReadInteger('Задайте число строк (столбцов) матрицы:'); var a:array[,] of integer; var m:=ArrFill(n,False); SetLength(a,n,n); MatInput(a); Writeln('*** Принятая матрица ***'); MatPrint(a); var k:=1; for var i:=0 to n-2 do for var j:=i+1 to n-1 do if IsEqual(a,i,j,m) then Inc(k); if k>1 then Writeln('Количество совпадающих столбцов равно ',k) else Writeln('нет совпадающих столбцов') end.
Тестовое решение Задайте число строк (столбцов) матрицы: 3 Вводите элементы матрицы построчно, в конце нажимая Enter 1: 1 2 2 2: 3 5 5 3: 2 2 2 *** Принятая матрица *** 1 2 2 3 5 5 2 2 2 Количество совпадающих столбцов равно 2
1) создать базу данных Access \Мои документы\Класс\Фамилия.
2) Создать таблицы (при создании таблиц использовать подстановку для
необходимых полей):
СОТРУДНИКИ ОТДЕЛЫ ДОЛЖНОСТИ
Имя поля имя поля имя поля
Таб_№ Отдел Должность
ФИО Оклад
Дата приема на работу
Дата увольнения
Должность
Пол
Курит
Отдел
Для поля [сотрудники]![Дата приема на работу] установить следующие
свойства:
Свойство Значения
Значение по умолчанию текущая дата
Условие на значение
текущей даты
Сообщение об ошибке Дата приема не должна быть
больше текущей даты
3) связать таблицы и обеспечить целостность данных, позволяя каскадное изменение
данных и не позволяя каскадное удаление.
4) с мастера форм создать формы Ф_ сотрудники, Ф_ отделы,
Ф_ должности для внесения данных в соответствующие таблицы.
5) заполнить таблицы следующими данными:
ОТДЕЛЫ ДОЛЖНОСТИ
Отдел Должность Оклад
Рекламы Директор
Маркетинга главный бух.
Дирекция Менеджер
Специалист
Экономист
6) заполнить таблицу сотрудники следующими данными:
Таб_ № ФИО
Дата
приема на
работу
Дата
увольнение должность пол курит отдел
5001 Степанов А. В. 20.01.1990 01.06.1990 Менеджер Ч Рекламы
5002 Юматов А. В. 10.06.1990 Менеджер Ч Рекламы
2005 Ахматова Э.Н. 06.10.1994 Главный
бух.
Ж Бухгалтерия
3200 Агутин И. Н.07.11.1998 05.03.2020 Экономист Ч Бухгалтерия
1321 Панова В. А. 05.03.1990 Директор Ж Дирекция
1103 Короленко Л. И 20.06.1995 Специалист Же Маркетинга
3233 Багрянов А. А. 07.03.2021 Экономист Ч Бухгалтерия
7) создать запросы:
a. История принятия на работу (сортировка по дате) за период с 01.01.1995 по
01.01.2000 включительно.
Дата приема на работу ФИО Таб_№ отдел должность Оклад
b. Список (отсортировать по ФИО) работающих рабочих в виде:
Таб_ № ФИО Пол Дата приема на работу Отдел Должность Оклад Курит
c. Суммарное значение должностных окладов по отделам (отсортировать по віддвлам):
Отдел Общая сумма окладов по отделу
8) По данным запросов создать:
a. Простой отчет.
b. Отчет, который вмещает уровни группировки с использованием итоговых значений.
Задание Макс.
2 20
3 10
4 10
5 0
6 0
7а 10
7в 15
7с 15
8а 5
8в 15
Всего 100
Объяснение:
Перевёл
procedure MatInput(a:array[,] of integer);
begin
Writeln('Вводите элементы матрицы построчно, в конце нажимая Enter');
for var i:=0 to Length(a,0)-1 do begin
Write(i+1,': ');
for var j:=0 to Length(a,1)-1 do Read(a[i,j]);
end
end;
procedure MatPrint(a:array[,] of integer);
begin
for var i:=0 to Length(a,0)-1 do begin
for var j:=0 to Length(a,1)-1 do Print(a[i,j]);
Writeln
end
end;
function IsEqual(a:array[,] of integer; j1,j2:integer;
flag:array of boolean):boolean;
// равны ли столбцы с индексами j1 и j2
begin
if flag[j2]=False then begin
Result:=True;
for var i:=0 to Length(a,0)-1 do
if a[i,j1]<>a[i,j2] then begin Result:=False; Break end;
flag[j2]:=Result
end
end;
begin
var n:=ReadInteger('Задайте число строк (столбцов) матрицы:');
var a:array[,] of integer;
var m:=ArrFill(n,False);
SetLength(a,n,n);
MatInput(a);
Writeln('*** Принятая матрица ***');
MatPrint(a);
var k:=1;
for var i:=0 to n-2 do
for var j:=i+1 to n-1 do
if IsEqual(a,i,j,m) then Inc(k);
if k>1 then Writeln('Количество совпадающих столбцов равно ',k)
else Writeln('нет совпадающих столбцов')
end.
Тестовое решение
Задайте число строк (столбцов) матрицы: 3
Вводите элементы матрицы построчно, в конце нажимая Enter
1: 1 2 2
2: 3 5 5
3: 2 2 2
*** Принятая матрица ***
1 2 2
3 5 5
2 2 2
Количество совпадающих столбцов равно 2