Пусть дана задача, состоящая из четырех частей:
1) вычислить элементы квадратной матрицы А, если
sin5i + cos 10j
aji = ----------------------;
tgij
2) из матрицы А получить вектор Х, если Хi – скалярное произведение побочной диагонали на i –й столбец;
3) упорядочить элементы строк матрицы А по убыванию;
4) вычислить значение функции
xi + xn-i+1
Y = ---------------.
Xn/2
Алгоритм решения каждой части задачи выполнить в виде отдельной подпрограммы.
Текст программы и результаты вычислений при n=6 приведены ниже.
program primer;
{-------------------- раздел описания типов -----------------}
type Vect = array[1..10] of real;
Matr = array[1..10,1..10] of real;
{------------------- раздел описания переменных ---------}
Var Dev: text;
Kanal: string;
i, j, n: integer;
Y: real;
A: matr;
X: vect;
{------------------- раздел описания подпрограмм ------- }
{------------------------ часть первая -----------------------------}
procedure MATRICA(N:integer;var A:matr);
var i, j: integer;
Begin
for j:=1 to n do
for i:=1 to n do
A[j,i]:=(sin(5*i)+cos(10*j))/(sin(i*j)/cos(i*j));
end;
{---------------------- часть вторая -------------------------------}
Procedure VECTOR (N: integer; A: matr; var X:vect);
var i, j: integer;
Begin
for j:=1 to n do begin
X[j]:=0.0;
for i:=1 to n do
|
|
X[j]:=x[j]+A[i,j]*A[i,n-i+1]; end;
end;
{--------------------- часть третья --------------------------------}
Procedure PORJADOK(N:integer; var A:matr);
var i,j, k, k1: integer;
s: real;
Begin
for k:=1 to n do begin
for i:=1 to n-1 do begin
s:=A[k,i]; k1:=i;
for j:=i+1 to n do
if s<A[k,j] then begin
s:=A[k,j];
k1:=j; end;
A[k,k1]:=A[k,i];
A[k,i]:=s;
end; end;
end;
{-------------------- часть четвертая ------------------------------}
FUNCTION FUNC(N: integer; X:Vect):Real;
var i, n1: integer;
s: real;
Begin
s:=0.0; n1:=n div 2;
for i:=1 to n do
s:=s+(x[i]+x[n-i+1])/x[n1];
func:=s;
end;
{-------------------- ОСНОВНАЯ ПРОГРАММА ------------------------}
Begin
write('Kanal=');
Readln(Kanal);
Assign(dev, kanal);
Rewrite(dev); write('N=');
Readln(n);
MATRICA(N,A); {вызов процедуры MATRICA}
writeln(dev,' матрица А: ');
for j:=1 to n do begin {начало вывода матрицы}
for i:=1 to n do
write(dev,a[i,j]:10:2);
writeln(dev); end; {конец вывода матрицы}
writeln(dev); {перевод строки}
VECTOR(N,A,X); {вызов процедуры VECTOR}
writeln(dev,' Элементы вектора Х: ');
for i:=1 to n do {начало вывода вектора}
write(dev, x[i]:10:2); {конец вывода вектора}
writeln(dev);
PORJADOK(N,A); {вызов процедуры PORJADOK}
writeln(dev,' Упорядоченная матрица:');
for i:=1 to n do begin {начало вывода упорядоченной матрицы}
for j:=1 to n do
write(dev, a[i,j]:10:2);
writeln(dev); end; {конец вывода упорядоченной матрицы}
writeln(dev);
Y:=FUNC(N,X); {присвоение Y значения функции FUNC}
writeln(dev,' Значение функции Y=', Y:6:2); {вывод значения функции}
Close(dev);
END.
Матрица А:
-1.15 0.25 5.64 -1.40 -0.00 6.57
0.63 -0.12 1.34 0.18 0.65 2.35
1.32 -3.64 -1.78 0.03 -1.89 0.27
0.06 -0.19 -1.68 0.82 0.84 0.02
0.29 0.43 -0.03 -0.36 -6.24 0.17
6.28 0.91 0.73 0.78 0.00 -0.25
Элементы вектора Х:
26.49 17.56 10.27 3.82 -0.92 36.96
Упорядоченная матрица:
6.28 1.32 0.63 0.29 0.06 -1.15
0.91 0.43 0.25 -0.12 -0.19 -3.64
5.64 1.34 0.73 -0.03 -1.68 -1.78
0.82 0.78 0.18 0.03 -0.36 -1.40
0.84 0.65 0.00 -0.00 -1.89 -6.24
6.57 2.35 0.27 0.17 0.02 -0.25
Значение функции Y= 18.33
Список литературы
1. Умергалин Т.Г., Мухамадеев И.Г. Основы программирования и работы в интегрированной среде Турбо-Паскаль. – Уфа: УНИ, 1992.- 45с.
|
|
2. Абрамов В.Г. Система программирования Паскаль. – М.: МЦНТИ, 1987.- 101с.
3. Новичков В.С. и др. Паскаль: Учеб. пособие для сред. спец. учеб. заведений. – М.: Высшая школа, 1990.- 223с.
4. Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. – М.: Изд-во МГТУ, 1990.- 580с.
ПРИЛОЖЕНИЕ 1