Пример написания программы

Пусть дана задача, состоящая из четырех частей:

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: