Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursova.docx
Скачиваний:
11
Добавлен:
19.02.2016
Размер:
68.68 Кб
Скачать

Модуль обслуговування матриці

Unit Service;

Interface

Uses Crt,Glob;

Procedure Vivod_mtr(st,sb:byte; Var s:Matrix);

Procedure Rezmernost(Var st,sb:byte);

implementation

Procedure Vivod_mtr(st,sb:byte; Var s:Matrix);

Var i,j:byte;

begin

for i:=1 to st do

begin

for j:=1 to sb do

write('a[',i,',',j,']=',s[i,j]:6:3,' ');

writeln;

end;

end;

Procedure Rezmernost(Var st,sb:byte);

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(st);

write('n = ');

readln(sb);

ClrScr;

end;

End.

Головна програма

Program Kursovaya_rabota;

Uses

Crt,Glob,Service;

Label G;

Var m,n:byte;

i,j:byte;

b,c:real;

u:real;

z:byte;

k:byte;

q:real;

p:byte;

x:masiv;

a:matrix;

BEGIN

ClrScr;

Writeln('Введите значенние "c" и "b" : ');

Write('c = ');

readln(c);

Write('b = ');

readln(b);

ClrScr;

Writeln('Как вы желаете ввести элементы матрицы?');

Writeln('Если автоматически-введите "1" ,если с клавиатуры-введите "0": ');

readln(z);

ClrScr;

If z=1 then

begin

Rezmernost(m,n);

for i:=1 to m do

begin

for j:=1 to n do

a[i,j]:=(exp((j-1)*ln(2)))*(abs((j-3))-1.3)*((ln((ABS(j-5))+(ABS(6.5-j))))/(ln(3)));

end;

end

else

if z=0 then

begin

Rezmernost(m,n);

writeln(' Введите элементы матрицы "A" : ');

writeln;

for i:=1 to m do

begin

for j:=1 to n do

readln(a[i,j]);

end;

ClrScr;

end else goto G;

writeln(' Матрица "A" : ');

writeln;

Vivod_Mtr(m,n,a);

for i:=1 to m do

begin

k:=0;

for j:=1 to n do if a[i,j]<0 then

begin

k:=k+1;

q:=a[i,j];

for p:=j downto k+1 do

a[i,p]:=a[i,p-1];

a[i,k]:=q;

end;

end;

Writeln;

Writeln(' Матрица "А" (перестановка):');

Writeln;

Vivod_Mtr(m,n,a);

for j:=1 to n do

x[j]:=0;

for i:=1 to m do

begin

for j:=1 to n do

x[j]:=x[j]+a[i,j];

end;

writeln;

Writeln(' Вектор "Х" : ');

writeln;

for j:=1 to n do

begin

x[j]:=x[j]/m;

write('x[',j,']=',x[j]:5:3,' ');

end;

Writeln;

u:=0;

for i:=1 to n do

if (c>b) or (c=b) then

u:=u+(abs(x[i])-1) else u:=u+sqr(x[i]);

Writeln;

Write(' Функция U=f(x[i]) : ');

Writeln;

Writeln('u = ',u:3:3);

writeln;

G: Repeat Until KeyPressed;

END.

Результати роботи програми

при m=n=3 і при однаковому форматі виведення для всіх видів даних

a[i,j]:6:3; При с=6,b=3. Введення за формулою.

Вихідна матриця

a[1,1]=1.434 a[1,2]= -1.100 a[1,3]= -8.069

a[2,1]=1.434 a[2,2]= -1.100 a[2,3]= -8.069

a[3,1]=1.434 a[3,2]= -1.100 a[3,3]= -8.069

Матриця з перестановкою від’ємних елементів

a[1,1]= -1.100 a[1,2]= -8.069 a[1,3]= 1.434

a[2,1]= -1.100 a[2,2]= -8.069 a[2,3]= 1.434

a[3,1]= -1.100 a[3,2]= -8.069 a[3,3]= 1.434

Масив Х

x[1]= -1.100 x[2]= -8.069 x[3]= 1.434

Значення функції: U = 7.604

Результати ручних розрахунків співпадають з прогамними, що свідчить про правільність роботи програми.

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]