Постановка задачи 2.
Разработать алгоритм и программу для нахождения максимального и минимального элементов матрицы Zij и их индексов (i,j). Экстремальные значения Zij искать среди элементов, для которых выполняются условия:
Матрица Zij формируется исходя из условий:
Где n-номер варианта, fn, fn+1 – функции, взятые из таблицы 5.1, в соответствии с вариантом n=i: размерность матрицы 30 на 30 (i=30, j=30). Функция fn зависит от x,Z,b,c,d (таблица 5.1), которые определяются как x=n(i+j), Z=ni, b=n(i+1), c=nj, d=n(j+1), где n-номер варианта. Если fn(x) неопределима при заданных x,Z,b,c,d, то Zij=0.
В программе организовать вывод максимального и минимального элементов, а также индексов j и i в файл Z.LST.
8 |
|
9 |
|
Алгоритм (блок-схема) программы 2.
начало
Открытие файла f,’a.lst
n:=6
i:=1
j:=1
x:=n*(i+j); a:=n*i;
b:=n*(i+1); c:=n*j;
d:=n*(j+1);
i>j
да нет
x<=0
x<=0
нет да
нет да
z[i,j]:=sin(a*sin(x)/cos(x)+b*ln(sin(x))+c*ln(sin(x)/cos(x))+d*d*d*cos(x));
z[i,j]:=0
z[i,j]:=cos(exp(1/3*ln(a/cos(x)))+exp(b*x)+sin(c*x*x)/cos(c*x*x)*sin(cx)*sin(c*x)-d*exp(3/4*ln(x)));
z[i,j]:=0
j<=30
i<=30
Z1
Вывод данных на экран
Конец
Вывод данных в файл
min:=z[1,1];
max:=z[1,1];
-0.3< z[i,j] <0.3
10<i+j<50
z[i,j]> max
max:=z[i,j] k:=i l:=j
min:=z[i,j] m:=i n:=j
Z1
i:=1
j:=1
да нет
да нет
z[i,j]<min
да нет нет
J<=30
I<=30
Программа 2.
progrZm kursZch;
uses crt;
vZr z:ZrrZy[1..30,1..30] of reZl;
mZx, min:reZl;
f:text;
i,j,x,Z,b,c,d,n:integer;
k,l,m,p:integer;
BEGIN
clrscr;
Zssign(f,'Z.LST');
rewrite(f);
min:=z[1,1];
mZx:=z[1,1];n:=6;
for i:=1 to 30 do begin
for j:=1 to 30 do begin
x:=n*(i+j);
Z:=n*i;
b:=n*(i+1);
c:=n*j;
d:=n*(j+1);
if i>j then begin
if (x<=0) then
z[i,j]:=0
else
z[i,j]:=sin(Z*sin(x)/cos(x)+b*ln(sin(x))+c*ln(sin(x)/cos(x))+d*d*d*cos(x));
end
else begin
if (x<=0) then
z[i,j]:=0
else
z[i,j]:=cos(exp(1/3*ln(Z/cos(x)))+exp(b*x)+sin(c*x*x)/cos(c*x*x)*sin(cx)*sin(c*x)-d*exp(3/4*ln(x)));
end; end; end;
for i:=1 to 30 do begin
for j:=1 to 30 do begin
if (z[i,j]>-0.3) Znd (z[i,j]<0.3) Znd ((i+j)>10) Znd ((i+j)<50)
then begin
if z[i,j]>mZx then begin
mZx:=z[i,j];
k:=i; l:=j;
end;
if z[i,j]<min then begin
min:=z[i,j];
p:=i; m:=j;
end;
end; end; end;
writeln(f,'vivodit mZx i min mZtrici i ih indeksi');
writeln(f,' i=',k:2,' j=',l:2,' mZx=',mZx:6:3);
writeln(f,' i=',p:2,' j=',m:2,' min=',min:6:3);
close(f);
writeln(' i=',k:2,' j=',l:2,' mZx=',mZx:6:3);
writeln(' i=',p:2,' j=',m:2,' min=',min:6:3);
reZdln;
END.
vivodit mZx i min mZtrici i ih indeksi
i=22 j=16 mZx= 0.298
i=11 j=23 min=-0.297