- •Кафедра обчислювальної техніки курсова робота
- •3. Після отримання компонентів вектора X обчисліти значення функції u.
- •3. За u взяти найбільшу суму двох сусідніх елементів вектору X, якщо вона перевищує значення максимального елемента матриці, інакше - добуток елементів масиву, які знаходяться на парних позиціях
- •II. Опис змінних:
- •Блок-схема алгоритму
- •Базова програма в системі turbo pascal(7.0) (без використання процедур)
- •I,j,n,t,dod,z:integer;
- •Програма з використанням процедур в системі turbo pascal(7.0)
- •Модуль глобальних описів
- •Сервісний модуль обслуговування матриці
- •Головна програма
- •I,j,n,t,dod,z:integer;
- •Результати роботи програми
- •1. Елементи вводимо з клавіатури(умова виконуеться)
- •2. Елементи вводимо з клавіатури(умова не виконуеться)
- •3. Елементи формуються за формулую
- •Використована література
Блок-схема алгоритму
Базова програма в системі turbo pascal(7.0) (без використання процедур)
Program Kursovaj;
Uses Crt;
Const Len=15;
Type
mtr=array[1..Len,1..Len] of real;
mas=array[1..Len] of real;
Var
I,j,n,t,dod,z:integer;
a:mtr;
x,m_max,m_min,o:mas;
u,flazhok,min,max,maxmax,minmin,sum,mm,ymn:real;
BEGIN
Clrscr;
writeln ('Vvedite razmernost matrix A: n');
write ('n='); read (n);
write('flazhok=');read(flazhok);
writeln;
For i:= 1 to n do
begin
For j:= 1 to n do
begin
if flazhok<0
then
begin
a[i,j]:=(j-5.7)*sqrt(abs(sin((i*i+j*j)+(2-(j-5)*(j-5)))));
end
else begin
write('a[',i,',',j,']=');
read(a[i,j]);
end; end;
end;
clrscr;
write('N=',N:5);
writeln;
write('flazhok=',flazhok:5:0);
writeln;
writeln('Matrica');
For i:= 1 to n do
begin
For j:= 1 to n do
write('a[',i,',',j,']=',a[i,j]:5:2,' ');
writeln;
writeln;
end;
writeln;
BEGIN
writeln('Vector') ;
For i:=1 to n do
begin
min:=a[i,1]; max:=a[i,1];
for j:=1 to n do
begin
if min>a[i,j] then min:=a[i,j];
if max<a[i,j] then max:=a[i,j];
end;
m_max[i]:=max;
m_min[i]:=min;
end;
maxmax:=m_max[1];
minmin:=m_min[1];
For i:=1 to n do
begin
if maxmax<m_max[i] then maxmax:=m_max[i];
if minmin>m_min[i] then minmin:=m_min[i];
end;
if (minmin>0) and (maxmax>0) then
begin
for i:=1 to n do
begin
t:=i; x[t]:=m_max[i]+m_min[i];
write('x[',t,']=',x[t]:5:3,' ')
end;
end else
if (minmin<0) and (maxmax<0) then
begin
for i:=1 to n do
begin
t:=i; x[t]:=m_max[i]+m_min[i];
write('x[',t,']=',x[t]:5:3,' ')
end;
end else
Begin
t:=0;
For j:=1 to n do
begin
dod:=0;
for i:=1 to n do
begin
if a[i,j]>0 then dod:=dod+1;
end;
if dod=n/2
then
begin
t:=t+1; sum:=0;
for i:=1 to n do
begin
sum:=sum+a[i,j]
end;
x[t]:=sum;
write('x[',t,']=',x[t]:5:3,' ')
end;
end;
End;
writeln;
z:=0;
for i:=1 to (t-1) do
begin
z:=z+1;
o[z]:=x[i]+x[i+1];
end;
mm:=o[1];
ymn:=1;
for i:=1 to z do
begin
if mm<o[z] then mm:=o[i];
end;
if mm>maxmax then
u:=mm
else
begin
for i:=1 to t do
begin
if i mod 2=0 then
ymn:=ymn*x[i];
end;
u:=ymn;
end;
writeln('funksia U=',u:5:3);
repeat until keypressed;
end;
end.
Програма з використанням процедур в системі turbo pascal(7.0)
Program Kursovaj;
Uses Crt;
Const Len=15;
Type
mtr=array[1..Len,1..Len] of real;
mas=array[1..Len] of real;
Var
i,j,n,t,dod,z:integer;
a:mtr;
x,m_max,m_min,o:mas;
u,flazhok,min,max,maxmax,minmin,sum,mm,ymn:real;
Procedure CreateMatrix(n:byte; var a:mtr; flazhok:real);
Var i,j:integer;
Begin
For i:= 1 to n do
begin
For j:= 1 to n do
begin
if flazhok<0
then
begin
a[i,j]:=(j-5.7)*sqrt(abs(sin((i*i+j*j)+(2-(j-5)*(j-5)))));
end
else begin
write('a[',i,',',j,']=');
read(a[i,j]);
end; end; end; end;
Procedure OutputMatrix(n:byte; var a:mtr);
Var i,j:integer;
begin
writeln('______________Matrica______________');
For i:= 1 to n do
begin
For j:= 1 to n do
write('a[',i,',',j,']=',a[i,j]:5:2,' ');
writeln;
writeln;
end;
writeln;
end;
Procedure OutputVector(n:byte;a:mtr;Var x,m_max,m_min:mas;
Var t,dod:integer; Var min,max,maxmax,minmin,sum:real);
begin
writeln('Vector') ;
For i:=1 to n do
begin
min:=a[i,1]; max:=a[i,1];
for j:=1 to n do
begin
if min>a[i,j] then min:=a[i,j];
if max<a[i,j] then max:=a[i,j];
end;
m_max[i]:=max;
m_min[i]:=min;
end;
maxmax:=m_max[1];
minmin:=m_min[1];
For i:=1 to n do
begin
if maxmax<m_max[i] then maxmax:=m_max[i];
if minmin>m_min[i] then minmin:=m_min[i];
end;
if (minmin>0) and (maxmax>0) then
begin
for i:=1 to n do
begin
t:=i; x[t]:=m_max[i]+m_min[i];
write('x[',t,']=',x[t]:5:3,' ')
end;
end else
if (minmin<0) and (maxmax<0) then
begin
for i:=1 to n do
begin
t:=i; x[t]:=m_max[i]+m_min[i];
write('x[',t,']=',x[t]:5:3,' ')
end;
end else
Begin
t:=0;
For j:=1 to n do
begin
dod:=0;
for i:=1 to n do
begin
if a[i,j]>0 then dod:=dod+1;
end;
if dod=n/2
then
begin
t:=t+1; sum:=0;
for i:=1 to n do
begin
sum:=sum+a[i,j]
end;
x[t]:=sum;
write('x[',t,']=',x[t]:5:3,' ')
end;
end;
End;
writeln;
end;
procedure fanction(i,z:integer;mm,ymn,u:real; Var o:mas);
begin
z:=0;
for i:=1 to (t-1) do
begin
z:=z+1;
o[z]:=x[i]+x[i+1];
end;
mm:=o[1];
ymn:=1;
for i:=1 to z do
begin
if mm<o[z] then mm:=o[i];
end;
if mm>maxmax then
u:=mm
else
begin
for i:=1 to t do
begin
if i mod 2=0 then
ymn:=ymn*x[i];
end;
u:=ymn;
end;
writeln('funksia U=',u:5:3);
end;
BEGIN
Clrscr;
writeln ('Vvedite razmernost matrix A: n');
write ('N='); read (n);
write('flazhok=');read(flazhok);
writeln;
CreateMatrix(n,a,flazhok);
clrscr;
write('N=',n:5);
writeln;
write('flazhok=',flazhok:5:0);
writeln;
OutputMatrix(n,a);
OutputVector(n,a,x,m_max,m_min,t,dod,min,max,maxmax,minmin,sum);
fanction(i,z,mm,ymn,u,o);
repeat until keypressed;
END.