Читайте также: |
|
Пример 1. Разработать 2 функции: 1 – с результатом логического типа, которая проверяет, все ли элементы главной диагонали квадратной матрицы одинаковы? 2 – с результатом целого типа, которая определяет максимальный злемент главной диагонали квадратной матрицы. Найти сумму максимальных элементов матриц A и B, если в обеих матрицах элементы диагоналей разные.
Program DIAGONAL;
$APPTYPE CONSOLE}
Uses SysUtils;
Сonst nmax=30;
Type Tmatr=array[1..nmax,1..nmax] of integer;
Function Proverka(Const x:Tmatr;nx:integer):boolean;
// Проверка, все ли элементы главной диагонали равны?
// C использованием переменной Result
Var i:integer;
begin
Result:=true;
for i:=2 to nx do
if x[1,1]<>x[i,i] then Result:=false;
end;
//
Function MaxDiag(Const x:Tmatr;nx:integer):integer;
// Поиск максимального элемента главной диагонали
// C использованием переменной Result
Var i:integer;
begin
Result:=x[1,1];
for i:=2 to nx do
if x[i,i]>Result then Result:=x[i,i];
end;
//
{
Function MaxDiag(Const x:Tmatr;nx:integer):integer;
// Поиск максимального элемента главной диагонали
// С использованием имени функции
// Необходимо описание дополнительной локальной переменной max
Var i:integer;
max:integer; // дополнительная переменная
begin
max:=x[1,1];
for i:=2 to nx do
if x[i,i]>max then max:=x[i,i];
MaxDiag:=max; // Присвоение результата имени функции
end;
}
//
Procedure VvodMatr(Var x:Tmatr; Var nx:integer);
// Ввод матрицы
Var i,j:integer;
begin
writeln(’Введите размер матрицы’);
readln(nx);
writeln(’Введите матрицу’);
for i:=1 to nx do
begin
for j:=1 to nx do read(x[i,j];
readln;
end;
end;
//
var // объявление глобальных параметров
a,b:Tmatr;
na,nb,i:integer;
Begin
writeln('введите матрицу А:');
VvodMatr(a,na);
writeln('введите матрицу B:');
VvodMatr(b,nb);
If (Proverka(a,na)=true) and (Proverka(b,nb)=true) then
begin
summa:=MaxDiag(a,na)+MaxDiag(b,nb);
writeln(’Сумма максимальных =’,summa:6);
end
else writeln(’Элементы одинаковы ’);
readln;
End.
Пример 2. Разработать функцию, которая формирует множество цифр, входящих в строку произвольной длины. Найти цифры, которые входят в каждую строку массива строк.
Program CIFRI;
$APPTYPE CONSOLE}
Uses SysUtils;
Сonst nmax=30;
Type Tmas=array[1..nmax] of string;
Tset=set of '0'..'9';
Function FormMn(s:string):Tset;
// Формирование множества цифр, входящих в строку
// C использованием переменной Result
Var
i:integer;
begin
Result:=[]; // пустое множество
for i:=1 to length(s) do
if s[i] in [’0’..’9’] then Result:=Result+[s[i]];
end;
//
var // объявление глобальных параметров
a:Tmas;
na,i:integer;
mnvezde:Tset; // результат-множество цифр, которые есть в каждой строке
Begin
writeln('введите количество строк:');
readln(na);
writeln(’Введите строки’);
for i:=1 to na do readln(a[i]);
mnvezde:=[’0’..’9’];
for i:=1 to na do mnvezde:=mnvezde*FormMn(A[i]); // пересечение множеств
if mnezde=[] then writeln(’Нет цифр, входящих в каждую строку’)
else
begin
writeln(’Цифры, входящие в каждую строку’);
for ch:=’0’ to ’9’ do
if ch in mnvezde then write(ch:2);
writeln;
end;
readln;
end.
Пример 3. Разработать функцию, которая определяет победителя среди пловцов, данные о которых содержатся в массиве записей с полями: фамилия, имя, результат. Найти победителей на дистанциях 100 и 200 метров. Результаты спортсменов занесены в два массива: отдельно на 100 м и на 200 м. Победителям выдаются призы. Если победителем на обеих дистанциях является один и тот же спортсмен, приз ему увеличивается в 4 раза.
Program PLOVEC;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const nmax=40;
Type Tsport=record
fam:string[10];
name:string[8];
rez:real;
end;
Tmas=array[1..nmax] of Tsport;
Procedure Vvod(Var a:Tmas; Var na:integer);
// Ввод массива записей
Var i:integer;
begin
writeln('введите количество спортсменов: ');
readln(na);
for i:=1 to na do
begin
writeln(’введите фамилию:’); readln(a[i].fam);
writeln('введите имя:'); readln(a[i].name);
writeln('введите результат:'); readln(a[i].rez);
end;
end;
//
Function PobSor(Const a:Tmas; na:integer):Tsport;
// Поиск победителя в массиве
Var i:integer;
begin
Result:=a[1];
For i:=2 to na do
If a[i].rez<Resalt.rez then Result:=a[i];
end;
//
var // объявление глобальных параметров
a100,a200:Tmas;
na100,na200,i:integer;
p100,p200:Tsport;
Begin
Writeln(’Введите результаты на 100 м’);
Vvod(a100,na100);
Writeln(’Введите результаты на 200 м’);
Vvod(a200,na200);
p100:=PobSor(a100,na100); // победитель на 100 м
p200:=PobSor(a200,na200); // победитель на 200 м
if p100=p200 then
begin
writeln(’Победитель на обеих дистанциях:’);
writeln(p100.fam:12,’ ’:4,p100.name:10, ’ ’:4,p100.rez:8:3);
writeln(’Приз – 4000 евро’);
end
else
begin
writeln(’Победитель на дистанции 100 м:’);
writeln(p100.fam:12, ’ ’:4,p100.name:10, ’ ’:4,p100.rez:8:3);
writeln(’Приз – 1000 евро’);
writeln(’Победитель на дистанции 200 м:’);
writeln(p200.fam:12, ’ ’:4,p200.name:10, ’ ’:4,p200.rez:8:3);
writeln(’Приз – 1000 евро’);
end;
readln;
end.
Дата добавления: 2015-07-26; просмотров: 96 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задания для самостоятельной работы | | | II.2. Калькуляция затрат труда и заработной платы. |