Лабораторная работа: Все лабы Ваулина, 12 вариант
Описание
Характеристики лабораторной работы
Преподаватели
Список файлов
- 1 сем
- L1.TXT 517 b
- L10.txt 761 b
- L11 Лазарус.txt 1,85 Kb
- L12 Лазарус.txt 1,87 Kb
- L13 Лазарус.txt 2,59 Kb
- L14 Лазарус.txt 3,03 Kb
- L15 Лазарус (кривой вывод).txt 1,99 Kb
- L2.TXT 1,61 Kb
- L3.TXT 896 b
- L4.TXT 1,27 Kb
- L5.TXT 683 b
- L6.TXT 1,57 Kb
- L7.txt 795 b
- L8.txt 1,2 Kb
- L9.txt 2 Kb
program L1;
// Счёт по формуле
var a, b, c, x, y1, y2: real;
begin
writeln('Введите a, b, x'); read(a, b, x); writeln;
// По формуле
y1:=exp(ln(a/b)*x)+exp(ln(a/b)*2*x)+2*ex p(ln(a/b)*(-2/3))*(ln(a/b)/ln(2));
writeln(' По формуле:');
writeln(' y1 = ', y1:6:2);
writeln;
// С заменой
c:=a/b;
y2:=exp(ln(c)*x)+exp(ln(c)*2*x)+2*exp(ln (c)*(-2/3))*(ln(c)/ln(2));
writeln(' С заменой:');
writeln(' y2 = ', y2:6:2);
readln;
end.
program L10;
// Функция
const kmax=11; lmax=15;
type tmatr=array[1..kmax,1..lmax] of integer;
var
Y:tmatr;
TF:array[1..kmax] of boolean;
i, j, k, l: integer;
function SIM(var M:tmatr; i, l: integer):boolean;
// Проверка симметричности строки
var j:integer;
begin
result:=true;
for j:=1 to l div 2 do if M[i,j]<>M[i,l-j+1] then result:=false;
end;
begin
writeln('Введите k, l'); readln(k,l); writeln;
writeln('Введите матрицу');
for i:=1 to k do for j:=1 to l do read(Y[i,j]); writeln;
for i:=1 to k do TF[i]:=SIM(Y, i, l);
writeln('Матрица Y');
for i:=1 to k do begin
for j:=1 to l do write(Y[i,j]:3);
writeln(TF[i]:8);
end;
end.
program project1;
// Процедура
const kmax=12; nmax=15;
type
tmatr=array[1..kmax,1..nmax] of real;
tmas=array[1..kmax] of real;
var
SP:tmatr;
sum, pr, A: tmas;
sumMax, prMax: real;
i, j, k, n, iSmax, iPmax: integer;
procedure Vvod(var M: tmatr; k, n: integer);
// Ввод матрицы
var i, j: integer;
begin
for i:=1 to k do for j:=1 to n do read(M[i,j]); writeln;
end;
procedure SumPr(var M:tmatr; out sum, pr, A: tmas; k, n: integer;
out sumMax, prMax: real; out iSmax, iPmax: integer);
// Макс. сумма и произведение в строках
var i, j: integer;
begin
sumMax:=0; prMax:=0;
for i:=1 to k do begin
sum[i]:=0; pr[i]:=1;
for j:=1 to n do begin
sum[i]:=sum[i]+M[i,j];
pr[i]:=pr[i]*M[i,j];
end;
if sum[i]>sumMax then begin
iSmax:=i; sumMax:=sum[i];
end;
if pr[i]>prMax then begin
iPmax:=i; prMax:=pr[i];
end;
A[i]:=sum[i]*pr[i];
end; end;
procedure Vyvod(var M:tmatr; sum, pr, A: tmas;
sumMax, prMax: real; k, n, iSmax, iPmax: integer);
// Вывод
var i, j: integer;
begin
for i:=1 to k do begin
for j:=1 to n do write(M[i,j]:7:2); writeln;
end; writeln;
writeln('iSmax=',iSmax,' sumMax=',sumMax:1:2);
writeln('iPmax=',iPmax,' prMax=',prMax:1:2);
writeln; writeln('Массив sum');
for i:=1 to k do write(sum[i]:8:2); writeln;
writeln; writeln('Массив pr');
for i:=1 to k do write(pr[i]:8:2); writeln;
writeln; writeln('Массив A');
for i:=1 to k do write(A[i]:8:2);
end;
begin
writeln('Введите k, n'); readln(k,n); writeln;
writeln('Введите матрицу'); Vvod(Sp, k, n);
SumPr(SP, sum, pr, A, k, n, sumMax, prMax, iSmax, iPmax);
writeln('Матрица SP');
Vyvod(SP, sum, pr, A, sumMax, prMax, k, n, iSmax, iPmax);
readln; readln;
end.
program L12;
// Строка
const
nmax=30;
glas: set of char=['a','e','i','o','u','y'];
type Tmas=array[1..nmax] of string;
var
S, S1, wMax: string;
A, B: Tmas;
i, j, k, l: integer;
procedure Probel(var S:string; out S1:string);
// Преобразование строки
begin
S1:=S;
while pos(' ',S1)>0 do delete(S1,pos(' ',S1),1);
if S1[1]=' ' then delete(S1,1,1);
end;
procedure Mas(var S1:string; out A:tmas; out k:integer);
// Преобразование в массив
var w:string;
begin
k:=0; w:='';
if S1[length(S1)]<>' ' then S1:=S1+' ';
for i:=1 to length(S1) do if S1[i]<>' ' then w:=w+S1[i] else begin
inc(k); A[k]:=w; w:='';
end;
end;
procedure Sort(A:tmas; out B:tmas; out wMax:string);
// Cортировка массива по убыванию гласных
// Слово с наибольшим числом гласных
var
X, Y, buf: string;
x1, y1: integer;
begin
for i:=1 to k do B[i]:=A[i];
for i:=1 to k-1 do for j:=i+1 to k do begin
x1:=0; y1:=0;
X:=B[i]; Y:=B[j];
for l:=1 to length(X) do if X[l] in glas then inc(x1);
for l:=1 to length(Y) do if Y[l] in glas then inc(y1);
if x1<y1 then begin
buf:=B[i]; B[i]:=B[j]; B[j]:=buf;
end;
end; wMax:=B[1];
end;
begin
writeln('Введите строку'); readln(S); writeln;
writeln('Исходная строка'); writeln(S); writeln;
Probel(S, S1);
writeln('Преобразованная строка');
writeln(S1); writeln;
Mas(S1, A, k);
writeln('Массив слов');
for i:=1 to k do writeln(' ',A[i]); writeln;
Sort(A, B, wMax);
writeln('Отсортированный массив слов');
for i:=1 to k do writeln(' ',B[i]); writeln;
writeln('Слово с наибольшим числом гласных'); writeln(' ',wMax);
readln;
end.
program L13;
// Тип запись
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes;
const nmax=10;
type
trabotn=record
Fam: string[9];
Name: string[9];
year: 1950..2001;
doljnos: string[15];
notdel: integer;
stag: 1..50;
oklad: integer;
end;
tmas=array[1..nmax] of trabotn;
var
masrabotn, rabotn: tmas;
n, k: integer;
procedure vvodzapisey(var x:tmas; nx:integer);
// Ввод
var i:integer;
begin
for i:=1 to nx do begin
write('Фамилия: '); readln(x[i].Fam);
write('Имя: '); readln(x[i].Name);
write('Год рождения: '); readln(x[i].year);
write('Номер отдела: '); readln(x[i].notdel);
write('Должность: '); readln(x[i].doljnos);
write('Стаж: '); readln(x[i].stag);
write('Оклад: '); readln(x[i].oklad);
writeln;
end; end;
procedure vivodzapisey(var x:tmas; nx:integer);
// Вывод
var i:integer;
begin
writeln(' ':6,'Сотрудник:',' ':5,'Год рождения:',' ':4,'Номер отдела:',' ':3,'Должность:',' ':2,'СТАЖ:',' ':2,'ОКЛАД:');
for i:=1 to nx do begin
with x[i] do write(Fam:10, Name:9, year:11, notdel:15, doljnos:17, stag:7, oklad:10);
writeln;
end; end;
procedure obr(var x:tmas; nx:integer; out y:tmas; out kx:integer);
// Обработка
var
t: trabotn;
Sum, Sra: real;
i, j, k: integer;
begin
Sum:=0; k:=0;
for i:=1 to nx do begin
Sum:=Sum+x[i].oklad; k:=k+1;
end;
Sra:=Sum/k; j:=0; kx:=nx;
for i:=1 to nx do begin
if (x[i].oklad>Sra) then begin
j:=j+1; y[j]:=x[i];
end else kx:=kx-1;
end;
for i:=1 to kx-1 do for j:=i+1 to kx do if (y[i].oklad>y[j].oklad) then begin
t:=y[i]; y[i]:=y[j]; y[j]:=t;
end;
writeln('Sra = ',Sra:6:3);
end;
procedure sort(var x:tmas; nx:integer);
// Сортировка по возрастанию оклада
var
t: trabotn;
i, j: integer;
begin
for i:=1 to nx-1 do for j:=i+1 to nx do if (x[i].oklad>x[j].oklad) then begin
t:=x[i]; x[i]:=x[j]; x[j]:=t;
end; writeln;
end;
begin
write('Введите количество работников: '); readln(n); writeln;
vvodzapisey(masrabotn, n); writeln;
writeln('Данные работников:');
vivodzapisey(masrabotn, n); writeln;
obr(masrabotn, n, rabotn, k); writeln;
writeln('Сформированный список:');
vivodzapisey(rabotn, k);
sort(masrabotn, n);
writeln('Отсортированный список:');
vivodzapisey(masrabotn, n); writeln;
readln;
end.
program L14;
// Типизированные файлы
type
trab=record
Fam: string[9];
Name: string[9];
year: 1950..2001;
dol: string[15];
otdel: integer;
stag: 1..50;
oklad: integer;
end;
tFile=file of trab;
str15=string[15];
var
t, f_oklad: tFile;
n: integer;
filename, oklad_name: str15;
sr_oklad: real;
Procedure input_file(var F:tFile; nM:integer);
// Ввод
var
s: trab;
i: integer;
begin
rewrite(F);
for i:=1 to nM do begin
write('Фамилия: '); readln(s.fam);
write('Имя: '); readln(s.name);
write('Год рождения: '); readln(s.year);
write('Номер отдела: '); readln(s.otdel);
write('Должность: '); readln(s.dol);
write('Стаж: '); readln(s.stag);
write('Оклад: '); readln(s.oklad);
writeln; write(F, s);
end;
close(F);
end;
Procedure output_file(var F:tFile);
// Вывод
var s: trab;
begin
reset(F);
writeln(' ':6,'Сотрудник:',' ':5,'Год рождения:',' ':4,'Номер отдела:',' ':3,'Должность:',' ':2,'Стаж:',' ':2,'Оклад:');
while not eof(F) do begin
read(F, s);
write(s.fam:9); write(s.name:9); write(s.year:13);
write(s.otdel:15); write(s.dol:17); write(s.stag:7); write(s.oklad:8);
writeln;
end;
close(F);
end;
procedure obr_file(var F:tfile; out D:tfile; out xs:real);
var s: trab;
begin
xs:=0;
reset(f);
while not eof(F) do begin
read(f, s); xs:=xs+s.oklad;
end;
xs:=xs/filesize(f);
seek(f, 0);
rewrite(d);
while not eof(F) do begin
read(f, s);
if s.oklad>xs then write(d, s);
end;
closefile(f); closefile(D);
end;
procedure sort_file(var D:tfile);
var
a, b: trab;
i, j: integer;
begin
reset(D);
for i:=0 to Filesize(D)-2 do for j:=0 to Filesize(D)-2 do begin
seek(D, j); read(D, a, b);
if a.oklad>b.oklad then begin
seek(D, j); write(D, b, a);
end;
end;
closefile(D);
end;
begin
write('Введите название файла записей: '); readln(filename); Assign(t, filename); writeln;
write('Введите количество сотрудников: '); readln(n); writeln;
input_file(t, n); writeln;
writeln('Файл: ', filename); output_file(t); writeln; writeln;
// Составление списка сотрудников с окладом выше среднего
write('Введите название файла записей сотрудников с окладом выше среднего: ');
readln(oklad_name); writeln;
Assign(f_oklad, oklad_name);
obr_file(t, f_oklad, sr_oklad);
writeln('Средний оклад: ', sr_oklad:5:2); writeln;
writeln('Файл с окладом выше среднего: ', oklad_name); output_file(f_oklad);
// Сортированный
writeln; writeln;
writeln('Сортированный файл: ', oklad_name);
sort_file(f_oklad); output_file(f_oklad);
erase(t); erase(f_oklad);
writeln; writeln; readln;
end.
program L15;
// Типизированный файл
type tfil=textfile;
Procedure Vvod(var F:tfil; k:integer);
// Ввод
var
fam, name: string[10];
dolg: string[15];
year, nomer, oklad, stag: integer;
p2: string[2];
i, j: integer;
begin
p2:=' ';
for i:=1 to k do begin
write('Фамилия: ');readln(fam);
if length(fam)<10 then begin
j:=10-length(fam);
while j>0 do begin
fam:=fam+' ';
j:=j-1;
end;
end;
write('Имя: ');readln(name);
if length(name)<10 then begin
j:=10-length(name);
while j>0 do begin
name:=name+' ';
j:=j-1;
end;
end;
write('Год рождения: '); readln(year);
write('Номер отдела: '); readln(nomer);
write('Должность: '); readln(dolg);
write('Оклад: '); readln(oklad);
write('Стаж: '); readln(stag);
writeln;
writeln(F, fam:10, p2:2, name:10, p2:2, year:4, p2:2, nomer:3, p2:2, dolg:15, p2:2, oklad:6, p2:2, stag:3);
end;
close(F);
end;
procedure Vyvod(var F:tfil);
// Вывод
var
fam, name: string[10];
dolg: string[15];
year, nomer, oklad, stag: integer;
p2: string[2];
begin
p2:=' ';
reset(F);
while not eof(F) do begin
readln(F, fam, p2, name, p2, year, p2, nomer, p2, dolg, p2, oklad, p2, stag);
writeln(' ':3, fam:10,' ':3,name:10,' ':9,year:4,' ':15,nomer:3,' ',dolg:15,' ':2,oklad:6,' ':2,stag:3);
end;
close(F);
end;
var
F: tfil;
FileName: string[15];
k: integer;
begin
write('Введите имя файла: '); readln(FileName); writeln;
FileName:=FileName+'.txt';
write('Введите количество сотрудников: '); readln(k); writeln;
assignfile(F, FileName);
rewrite(F);
Vvod(F, k);
writeln('Фамилия:':11,'Имя:':12,'Год рождения:':17,'Номер отдела:':18,'Должность:':14,'Оклад:':13, 'Стаж:':10);
Vyvod(F);
writeln; readln;
end.
program L2;
// Разветвление if, case
label 1;
var x, y1, y2, y3: real; v1, v2, v3: integer;
begin
writeln('Введите x'); readln(x); writeln;
// if короткий
if x<=-3 then begin y1:=0; v1:=1; goto 1; end;
if (x>-3) and (x<=-2) then begin y1:=x+3; v1:=2; goto 1; end;
if (x>-2) and (x<=-1) then begin y1:=-x-1; v1:=3; goto 1; end;
if (x>-1) and (x<=1) then begin y1:=0; v1:=4; goto 1; end;
if (x>1) and (x<=2) then begin y1:=x-1; v1:=5; goto 1; end;
if (x>2) and (x<=3) then begin y1:=-x+3; v1:=6; goto 1; end;
if x>3 then begin y1:=0; v1:=7; end;
1:writeln(' if короткий:');
writeln(' y1 = ', y1:5:2, ' v1 = ', v1);
writeln;
// if полный
if x<=-3 then begin y2:=0; v2:=1; end else
if (x>-3) and (x<=-2) then begin y2:=x+3; v2:=2; end else
if (x>-2) and (x<=-1) then begin y2:=-x-1; v2:=3; end else
if (x>-1) and (x<=1) then begin y2:=0; v2:=4; end else
if (x>1) and (x<=2) then begin y2:=x-1; v2:=5; end else
if (x>2) and (x<=3) then begin y2:=-x+3; v2:=6; end else
if x>3 then begin y2:=0; v2:=7; end;
writeln(' if полный:');
writeln(' y2 = ', y2:5:2, ' v2 = ', v2);
writeln;
// case
if x<=-3 then v3:=1;
if (x>-3) and (x<=-2) then v3:=2;
if (x>-2) and (x<=-1) then v3:=3;
if (x>-1) and (x<=1) then v3:=4;
if (x>1) and (x<=2) then v3:=5;
if (x>2) and (x<=3) then v3:=6;
if x>3 then v3:=7;
case v3 of
1: y3:=0;
2: y3:=x+3;
3: y3:=-x-1;
4: y3:=0;
5: y3:=x-1;
6: y3:=-x+3;
7: y3:=0;
end;
writeln(' case:');
writeln(' y3 = ', y3:5:2, ' v3 = ', v3);
readln;
end.
program L3;
// Табулирование функции
var w, a, t, tn, tk, ht: real;
n, i: integer;
begin
writeln('Введите a, tn, tk, ht'); read(a, tn, tk, ht); writeln;
// Цикл for
writeln(' Цикл for:');
n:=round((tk-tn)/ht)+1;
t:=tn;
writeln('':5, 't', '':10, 'w');
for i:=1 to n do begin
w:=t-exp(-a*sqr(t));
writeln(t:6:2, '':5, w:6:2);
t:=t+ht;
end;
writeln;
// Цикл while
writeln(' Цикл while:');
t:=tn;
writeln('':5, 't', '':10, 'w');
while t<=(tk+ht/2) do begin
w:=t-exp(-a*sqr(t));
writeln(t:6:2, '':5, w:6:2);
t:=t+ht;
end;
writeln;
// Цикл repeat
writeln(' Цикл repeat:');
t:=tn;
writeln('':5, 't', '':10, 'w');
repeat
w:=t-exp(-a*sqr(t));
writeln(t:6:2, '':5, w:6:2);
t:=t+ht;
until t>(tk+ht/2);
readln; readln;
end.
program L4;
// Вычисление произведений элементов массивов,
// нахождение наибольшего и наименьшего среди них
const Nmax=25;
var X, Y, Z: array[1..Nmax] of real;
Zmin, Zmax: real;
i, n, indZmin, indZmax: integer;
begin
// Ввод
writeln('Введите количество элементов (1-25)'); readln(n); writeln;
writeln('Введите элементы массива X'); for i:=1 to n do read(X[i]); writeln;
writeln('Введите элементы массива Y'); for i:=1 to n do read(Y[i]); writeln;
writeln(' Массив X');
for i:=1 to n do write(X[i]:6:2); writeln; writeln;
writeln(' Массив Y');
for i:=1 to n do write(Y[i]:6:2); writeln; writeln;
indZmin:=1; indZmax:=1;
Zmin:=X[1]*Y[1]; Zmax:=X[1]*Y[1];
writeln(' Массив Z');
for i:=1 to n do begin
Z[i]:=X[i]*Y[i];
write(Z[i]:6:2);
if Z[i]<Zmin then begin
Zmin:=Z[i];
indZmin:=i;
end;
if Z[i]>Zmax then begin
Zmax:=Z[i];
indZmax:=i;
end;
end; writeln; writeln;
// Вывод
writeln(' indZmax=', indZmax,' Zmax =', Zmax:6:2);
writeln(' indZmin=', indZmin,' Zmin =', Zmin:6:2);
readln; readln;
end.
program L5;
// Вычисление суммы членов бесконечного ряда,
// абсолютная и относительная ошибки
var x, eps, R, s, t, Pa, Po: real;
n, k: integer;
begin
writeln('Введите x, eps, k'); readln(x, eps, k); writeln;
t:=ln(x+sqrt(1+x*x));
s:=x+(-1/2)*(x*x*x/3);
n:=2; R:=(-1/2)*(x*x*x/3);
while abs(R)>eps do begin
n:=n+1;
R:=R*(-1)*(x*x*sqr(2*n-1))/(2*n*(2*n+1)) ;
s:=s+R;
end;
Pa:=abs(s-t); Po:=t/s;
writeln('t =', t:k+3:k);
writeln('s =', s:k+3:k);
writeln('R =', R:k+3:k);
writeln('n = ', n);
writeln('Pa =', Pa:5:2, '':3, 'Po =', Po:5:2);
readln;
end.
program L6;
// Вычисление площади интеграла
var
a, b, x, dx, St, Sp, Sl, Ss, St2, Eap, Eop, Eal, Eol, Eas, Eos, Eat2, Eot2: real;
i, n: integer;
begin
writeln('Введите a, b, n'); readln(a, b, n); writeln;
dx:=(b-a)/n;
St:=(exp(b)+exp(-b))/2-((exp(a)+exp(-a)) /2);
// Метод левосторонних прямоугольников
x:=a; Sl:=0;
for i:=1 to n do begin
Sl:=Sl+(exp(x)-exp(-x))/2; x:=x+dx;
end;
Sl:=Sl*dx; Eal:=St-Sl; Eol:=Eal/St;
// Метод правосторонних прямоугольников
x:=a+dx; Sp:=0;
for i:=1 to n do begin
Sp:=Sp+(exp(x)-exp(-x))/2; x:=x+dx;
end;
Sp:=Sp*dx; Eap:=St-Sp; Eop:=Eap/St;
// Средний метод
x:=a+dx/2; Ss:=0;
for i:=1 to n do begin
Ss:=Ss+(exp(x)-exp(-x))/2; x:=x+dx;
end;
Ss:=Ss*dx; Eas:=St-Ss; Eos:=Eas/St;
// Метод трапеции
x:=a+dx; St2:=((((exp(a)-exp(-a))/2)+((exp(b)-exp (-b))/2)))/2;
for i:=1 to n-1 do begin
St2:=St2+(exp(x)-exp(-x))/2; x:=x+dx;
end;
St2:=St2*dx; Eat2:=St-St2; Eot2:=Eat2/St;
// Вывод
writeln(' Метод Значение Абсолютное Относительное');
writeln(' Точное ', St:6:2, '':6, '-', '':11, '-');
writeln(' Левый ', Sl:6:2, '':3, Eal:6:2, '':6, Eol:6:2);
writeln(' Правый ', Sp:6:2, '':3, Eap:6:2, '':6, Eop:6:2);
writeln(' Средний ', Ss:6:2, '':3, Eas:6:2, '':6, Eos:6:2);
writeln(' Трапеция', St2:6:2, '':3, Eat2:6:2, '':6, Eot2:6:2);
readln;
end.
program L7;
// Уточнение корней
var xL, xP, x, x1, x0, x00, dx, Fx, Fl, eps: real;
ni, nd, k: integer;
begin
writeln('Введите xL, xP, eps, k'); readln(xL, xP, eps, k); writeln;
writeln('Метод простых итераций');
ni:=0;
x0:=(xL+xP)/2;
repeat
x1:=x0*x0-2;
dx:=abs(x1-x0);
x00:=x0;
x0:=x1;
ni:=ni+1;
until dx<eps;
writeln('x1=',x1:k+3:k, ' ':3, 'x0=',x00:k+3:k, ' ':3, 'ni=',ni);
writeln;
writeln('Метод деления отрезка пополам');
nd:=0;
Fl:=xL*xL-xL-2;
repeat
x:=(xL+xP)/2;
Fx:=x*x-x-2;
if Fl*Fx>0 then xL:=x else xP:=x;
nd:=nd+1;
until abs(xL-xP)<eps;
writeln('xL=',xL:k+3:k, ' ':3, 'xP=',xP:k+3:k, ' ':3, 'nd=',nd);
readln;
end.
program L8;
// Обработка матрицы
const Kmax=12; Lmax=14;
var Q:array[1..Kmax, 1..Lmax] of real;
sar:array[1..Kmax] of real;
oMax, pMin, sarMax: real;
i, j, k, l, n: integer;
begin
writeln('Введите k, l'); readln(k, l); writeln;
writeln('Введите элементы матрицы');
for i:=1 to k do for j:=1 to l do read(Q[i,j]);
writeln;
writeln('Матрица Q', '':28, 'oMax:', '':5, 'pMin:', '':5, 'sar[i]:');
for i:=1 to k do begin
for j:=1 to l do write(Q[i,j]:5:2, '':3);
// Нахождение среднего арифметического
oMax:=-100; pMin:=100;
for j:=1 to l do begin
if (Q[i,j]<0) and (Q[i,j]>oMax) then oMax:=Q[i,j];
if (Q[i,j]>0) and (Q[i,j]<pMin) then pMin:=Q[i,j];
end;
if oMax=-100 then oMax:=0;
if pMin=100 then pMin:=0;
sar[i]:=(oMax+pMin)/2;
writeln('':5, oMax:5:2, '':5, pMin:5:2, '':6, sar[i]:4:1);
end; writeln;
// Вывод максимального среднего арифметического
sarMax:=-100; n:=0;
for i:=1 to k do if sar[i]>sarMax then begin
sarMax:=sar[i]; n:=i;
end;
writeln('sarMax=',sarMax:4:1, '':3, 'n=',n);
end.
program L9;
// Сортировка массива
const Nmax=10;
var A, APu, APv, Aub, Avoz: array[1..Nmax] of real;
Amax, Amin, buf: real;
n, i, j, k, k1, k2, k3, k4, kmax, kmin: integer;
begin
writeln('Введите количество элементов (1-10)');
readln(n); writeln;
writeln('Введите элементы массива');
for i:=1 to n do read(A[i]); writeln;
writeln('Массив A');
for i:=1 to n do write(A[i]:6:2); writeln; writeln;
writeln('Метод пузырька:');
writeln(' По убыванию');
for i:=1 to n do APu[i]:=A[i];
k1:=0;
for i:=1 to n-1 do
for j:=1 to n-1 do if APu[j+1]>APu[j] then begin
buf:=APu[j];
APu[j]:=APu[j+1];
APu[j+1]:=buf;
k1:=k1+1;
end;
for j:=1 to n do write(APu[j]:6:2); writeln;
writeln(' k1=',k1); writeln;
writeln(' По возрастанию');
for i:=1 to n do APv[i]:=A[i];
k2:=0;
for i:=1 to n-1 do
for j:=1 to n-1 do if APv[j+1]<APv[j] then begin
buf:=APv[j];
APv[j]:=APv[j+1];
APv[j+1]:=buf;
k2:=k2+1;
end;
for j:=1 to n do write(APv[j]:6:2); writeln;
writeln(' k2=',k2); writeln;
writeln('Метод поиска:');
writeln(' Наибольшего');
for i:=1 to n do Aub[i]:=A[i];
k3:=0;
for k:=1 to n-1 do begin
Amax:=Aub[k]; kmax:=k;
for i:=k+1 to n do if Aub[i]>Amax then begin
Amax:=Aub[i];
kmax:=i;
end;
if Amax<>Aub[k] then k3:=k3+1;
Aub[kmax]:=Aub[k]; Aub[k]:=Amax;
end;
for i:=1 to n do write(Aub[i]:6:2); writeln;
writeln(' k3=',k3); writeln;
writeln(' Наименьшего');
for i:=1 to n do Avoz[i]:=A[i];
k4:=0;
for k:=1 to n-1 do begin
Amin:=Avoz[k]; kmin:=k;
for i:=k+1 to n do if Avoz[i]<Amin then begin
Amin:=Avoz[i];
kmin:=i;
end;
if Amin<>Avoz[k] then k4:=k4+1;
Avoz[kmin]:=Avoz[k]; Avoz[k]:=Amin;
end;
for i:=1 to n do write(Avoz[i]:6:2); writeln;
writeln(' k4=',k4);
end.