ПРОГРАМА З ВИКОРИСТАННЯМ ПРОЦЕДУР
Program Proverka_Proz;
uses Crt;
Const Len=100;
Type
mtr= array [1..Len,1..Len] of real; {Tip massiv-matriza}
mas= array [1..Len] of real; {Tip massiv-vector}
var i,j,k,m,n,l:integer;
a:mtr; { Imja peremennoi - matriza}
x:mas; { Imja peremennoi - vektor}
u:real; {Imja peremennoi -funzija}
c:real; { Rabochaja peremennaja}
Procedure Viv_M;
Begin
writeln;
writeln;
for i:=1 to m do {vnechnii zikl po strokam}
begin
for j:=1 to n do {vnutrenii zikl po stolbzam}
write ('a[',i,',',j,']=', a[i,j]:10:7,' '); {vivod elementa matrizi a[i,j] }
writeln; {operaator dlja perehoda na ocherednuju stroku}
end;
writeln;
End;
BEGIN
ClrScr;
{vvod elementov matrizi po strokam}
writeln ('vvedite razmernost matrizi A: chisla M i N');
write('m=');
read (m);
write('n=');
read(n);
{zapolnenie matrizi A -vvod elementov a[i,j]'}
for i:=1 to m do
for j:=1 to n do
a[i,j]:=(ABS(3.7-j)-2) *exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2)));
ClrScr;
{vivod matrizi A po strokam}
writeln ( ' ishodnaja Matriza');
Viv_M; {operator proceduru }
{ transponirovannaie Matrizi A }
L:=1; { nachalnoe znachenie parametra zikla po stolbzam pri transponirovanii Matrizi A }
for i:=1 to m-1 do
begin
for j:=L to n do
begin
c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c;
end;
L:=L+1
end;
writeln ( ' transponirovannaja Matriza');
|
|
{vivod transponirovannoi matrizi A po strokam }
Viv_M; {operator proceduru }
{formirovanie massiva X iz transponirovannoi matrizi A }
k:=1; {nachalnoe znachenie formirovatelja indexov massiva X}
for i:=1 to m do
for j:=1 to n do
if a[i,j]<2 then
begin
x[k]:=a[i,j];{formirovanie elementa x[k] massiva X }
k:=k+1;
end;
{vivod massiva X}
writeln(' Massiv X');
writeln;
for i:=1 to k-1 do
write ('x[',i,']=', x[i]:10:7,' ');{vivod elementa massiva X}
{vichislenie funkzii U}
U:=1; {nachalnoe znachenie funkzii U}
for i:=1 to k-1 do
U:=U*(x[i]+x[k-i]);
writeln;
writeln;
write ('Funkzija: u=',u:10:7);
Repeat Until KeyPressed
END.
МОДУЛЬ ГЛОБАЛЬНИХ ОПИСІВ
Unit Glob; {Имя модуля}
Interface
Const
Len=100;
Type
T_Matr=array[1..Len,1..Len] of real; {Тип массива-матрицы}
T_Vect=array[1..Len] of real; {Тип массива-вектора}
|
|
End.
СЕРВІСНИЙ МОДУЛЬ ОБСЛУГОВУВАННЯ МАТРИЦІ
Unit KR_Srv2;{ Имя сервисного модуля}
Interface
Uses
Glob; { Имя модуля с глобальными описаниями}
Procedure Ztvor_M(M,N:byte;Var ma:T_Matr); { Описание процедуры создания матрицы}
Procedure Print_M(Ma:T_Matr;M,N:byte); { Описание процедуры печати}
Implementation
Uses CRT;
Procedure Ztvor_M(M,N:byte;Var ma:T_Matr); { Процедура создания матрицы}
Var
i,j:byte; { Рабочие переменные}
Begin
writeln (' Введите размерность матрицы A: числа M и N'); write('m=');
read (m);
write('n=');
read(n);
ClrScr;
For i:=1 to m do
For j:=1 to n do
ma[i,j]:=(ABS(3.7-j)-2) *exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2)));
End;
Procedure Print_M(Ma:T_Matr;M,N:byte); { Процедура отображения матрицы}
var j,i:byte;
Begin
write (' Выведите элементы матрицы a[i,j]');
writeln;
writeln;
For i:=1 to m do
begin
|
|
For j:=1 to n do
write ('a[',i,’,’,j,']=',Ma[i,j]:10:7); { Отображение элементов матрицы}
writeln;
end;
End;
END.
ГОЛОВНА ПРОГРАМА
Program Matr_KR2;
uses Crt,Glob,KR_SRV2; { Список используемых модулей }
var i,j,k,m,n,l:integer; { Рабочие переменные }
a:T_Matr; {Имя элементов матрицы А}
x:T_Vect; {Имя элементов массива Х }
u:real; {Имя вычисляемой функции }
c:real; { Вспомогательная переменная для транспонирования матрицы }
begin
ClrScr;
writeln(' Исходная матрица');
Ztvor_M(M,N,A);
Print_M(A,M,N); { Оператор процедуры отображения матрицы }
{Транспонирование матрицы }
L:=1; {Начальное значение переменной для формирования начального значения параметра вложенного цикла (работа по столбцам) при транспонировании матрицы А }
for i:=1 to m-1 do
begin
for j:=l to n do
c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c; { Получение элементов транспонированной матрицы }
L:=L+1
end;
writeln ( ' Транспонированная матрица');
writeln;
Print_M(A,M,N); { Оператор процедуры отображения матрицы }
|
|
{Формирование массива X из транспонированной матрицы }
k:=1; {Начальное значение формирователя индексов элементов массива X}
for i:=1 to m do
for j:=1 to n do
if a[i,j]<2 then
begin
x[k]:=a[i,j];{Формирование элемента x[k]массива X }
k:=k+1;
end;
{Вывод массива X}
writeln(' Массив X');
writeln;
for i:=1 to k-1 do
write ('x[',i,']=', x[i]:10:7,' '); {Вывод элемента массива X}
{ Вычисление функции U}
U:=1; {Начальное значение функции U}
for i:=1 to k-1 do
U:=U*(x[i]+x[k-i]); {Значение функции U}
writeln;
writeln;
write ('u=',u:10:7); {Отображение результирующего значения функции U}
Repeat Until KeyPressed
END.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ
при m=n=3 і при однаковом форматі виведення для всіх чотирьох видів даних
a[i,j]:10:7;
Вихідна матриця
a[1,1]=-3.7007064 a[1,2]=0.3092295 a[1,3]=-0.0910127
a[2,1]=-3.6028023 a[2,2]=0.9875200 a[2,3]= 1.1849153
a[3,1]=-0.5229830 a[3,2]= 1.2015703 a[3,3]= 1.6857605
Транспонована матриця
a[1,1]=-3.7007064 a[1,2]=-3.6028023 a[1,3]= -0.5229830
a[2,1]= 0.3092295 a[2,2]= 0.9875200 a[2,3]= 1.2015703
a[3,1]=-0.0910127 a[3,2]= 1.1849153 a[3,3]= 1.6857605
Масив Х
x[1]=-3.700706 x[2]=-3.6028023 x[3]=-0.5229830 x[4]=0.3092295
x[5]=0.9875200 x[6]=1.2015703 x[7]=-0.0910127 x[8]=1.1849153
x[9]=1.6857665
Значення функції: U=40.3382026
Результати ручних розрахунків співпадають з прогамними, що свідчить про правільність роботи програми.
ВИКОРИСТОВАНА ЛІТЕРАТУРА
1. А. И. Марченко, Л. М. Марченко. Программирование в среде TURBO Pascal 7.0. Киев “ВЕК+””, Москва “ДЕСС”, 1999.
2. Ю.С. Бородич, А.Н. Вальвачев, Ф.И. Кузьмич. Паскаль для персональных компьютеров. Минск,”Вышэйшая школа”, БФ ГИТМП “НИКА”, 1991
3. Д.Б. Поляков, И.Ю. Круглов. Программирование в среде Турбо Паскаль , Москва , МАИ, А\О “РОСВУЗНАУКА”, 1992.
4. Ф.Б. Бартків, Я.Т. Гринчишин, А.М. Ломакович, Ю.С. Рамский. TURBO PASCAL: Алгоритми и програми. Київ, «Вища школа», 1992.
Дата добавления: 2018-05-09; просмотров: 242; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!