ПРОГРАМА З ВИКОРИСТАННЯМ ПРОЦЕДУР



 

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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!