Програма з використанням процедур
Program Proc_Kursova;
Uses Crt; {Підключаємо бібліотечний модуль}
Label G;
Const Len=100;
Type
mtr=array[1..Len,1..Len] of real; {Власний тип mtr}
mas=array[1..Len] of real;{Власний тип mas}
Var m,n:byte; {Робочі змінні : параметри розмірності}
i,j:byte; {Параметри циклів}
b,c:real;{Довільні змінні(для функції)}
u:real; {Ім'я функції}
k:byte;{Робоча змінна}
q:real;{Робоча змінна}
p:byte; {Робоча змінна}
z:byte; {Робоча змінна}
x:mas; {Масив Х}
a:mtr; {Матриця А}
Procedure Viv_m(h,v:byte; Var s:mtr);
Const Len=100;
Var i,j:byte;
Begin
writeln(' Матрица "A" : ');
writeln;
for i:=1 to h do
begin
for j:=1 to v do
write('a[',i,',',j,']=',s[i,j]:6:3,' ');
writeln;
end;
end;
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 {Якщо змінна z=1,то елементи матриці обрахуються за формулою}
begin
Writeln('Введите размерность матрицы [m x n] :');
Write('m = ');
readln(m);
write('n = ');
readln(n);
ClrScr;
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
Writeln('Введите размерность матрицы [m x n] :');
Write('m = ');
readln(m);
write('n = ');
readln(n);
ClrScr;
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;
Viv_m(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 {Здвигаємо елементи починаючи з j вліво до k+1}
a[i,p]:=a[i,p-1];
a[i,k]:=q; {На місце k ставимо число нового стовбця}
end;
end;
Writeln;
Viv_m(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 then u:=u+(abs(x[i])-1)
else u:=u+sqr(x[i]);
Writeln;
Write(' Функция U=f(x[i]) : ');
Writeln;
Writeln;
Writeln('u = ',u:3:2);
writeln;
G:
Repeat Until KeyPressed;
END.
Модуль глобальних описів
Unit Glob;
Interface
Const Len=100;
Type
Matrix:array [1..Len,1..Len] of real;
Masiv:array [1..Len] of real;
End.