Реферат

Реферат Лабораторная работа 12

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.2.2025





Цель работы: Изучение правил описания и вызова подпрограмм: процедур и функций. Получение навыков и овладение приемами работы над подпрограммами.

Задание№ 17. Посчитать сумму элементов лежащих выше главной диагонали матрицы для матрицы Z=X2+Y2.

Программа на Turbo Pascal

{Программа: Kyrsaс
h
                                                                         }


{Цель: Найти сумму элементов выше главной диагонали             }

{Переменные:                                                                                     }

{           
X
,
Y
          - вводимые массивы                                              }


{            N, M,
A
,
B
,
Z
    - промежуточные массивы                         }


{          
t
              - Размер массива                                                     }


{            i, j            - переменные цикла                                               }

{Программист: Позднышев А.А. группа 316                                   }

{Проверил: Новичков В.С.                                                                  }

Program Lab_12;

 uses crt;

 Const

  Nmax=10; {Максимальный размер массива}

 Type

  Matrics=array[1..Nmax,1..Nmax] of integer;

  Masiv=array[1..Nmax] of integer;

 Var

  X,Y,Z,A,B:matrics;

  M,N:masiv;

  i,j,t:integer;

{Процедура ввода элементов массива}

{Параметры: t - размер массива, X - массив}

Procedure Vvod (t:integer; Var X:matrics);

    Var

       i,j:integer;

Begin{Vvod}

     For i:=1 to t do

         For j:=1 to t do

             Begin {Ввод элементов}

                  Write ('[',i,',',j,']=');

                  Read (X[i,j]);

             End;  {Ввод элементов}

             For i:=1 to t do

                 Begin {Вывод элементов}

                      For j:=1 to t do

                          Write (X[i,j]:5);

                          Writeln

                 End   {Вывод элементов}

End;{Vvod}

{Процедура вывода элеменов матриц}

{Параметры: X,Y - матрицы, t - размер}

Procedure Echo (t:integer; X:matrics);

    var

       i,j:byte;

begin {Echo}

    For i:=1 to t do

        Begin

             For j:=1 to t do

                 Write (X[i,j]:5);

                 Writeln

        End

end; {Echo}

{Процедура умножения матриц}

{Параметры: X,Y - начальные массивы, Z - массив результат,t - размер}

Procedure Umn (X,Y:matrics; t:integer; Var Z:matrics);

    var

       i,j,k,s:integer;

begin {Umno}

     for i:=1 to t do

     for j:=1 to t do

         begin

         S:=0;

              for k:=1 to t do

                  s:=s+X[k,i]*Y[j,k];

         Z[i,j]:=s;

          end;

end;  {Umno}

{Процедура сложения массивов}

{Параметры: X,Y - начальные массивы, Z - массив результат, t - размер}

Procedure Summa(X,Y:matrics; t:integer; Var Z:matrics);

    var

       i,j:integer;

begin {Summa}

     for i:=1 to t do

         for j:=1 to t do

             Z[i,j]:=X[i,j]+Y[i,j]

end;  {Summa}

{Процедура для нахождения суммы ниже главной диагонали}

{Параметры: X - начальные массивы, Y - массив результат, t - размер}

Procedure Under (X:matrics; t:integer; Var Y:masiv);

  var

     s:real;

    Begin

      S := 0;

      For i := 2 to t do

        For j := 1 to i-1 do

          S:=S + X[i, j];

      WriteLn('Сумма элементов, лежащих ниже главной диагонали=', S:5:1);

    End;

{Процедура для нахождения суммы выше главной диагонали}

{Параметры: X - начальные массивы, Y - массив результат, t - размер}

Procedure Over (X:matrics; t:integer; Var Y:masiv);

  var

     s:real;

    Begin

      S := 0;

      For i := 1 to t-1 do

        For j := i+1 to t do

          S := S + X[i, j];

      WriteLn('Сумма элементов, лежащих выше главной диагонали=', S:5:1);

      ReadLn

    End;

begin{lab_12}

clrscr;

writeln('Введите размеры матриц X,Y:');read(t);

writeln('Введите ',t*t,' элемента для каждой матрицы:');

writeln('Введите матрицу X:');vvod(t,X);

writeln('Введите матрицу Y:');vvod(t,Y);

writeln('Результат возведения матрицы X в квадрат:');

Umn(X,X,t,A);

Echo(t,A);

writeln('Результат возведения матрицы Y в квадрат:');

Umn(Y,Y,t,B);

Echo(t,B);

writeln('Полученный массив после преобразований:');

summa(A,B,t,Z);

Echo(t,Z);

under(Z,t,M);

over(Z,t,N);

end.{lab_12}

Блок-схема


Проведём детализацию в последовательности, определяемой нумерацией блоков на рис. 1.

1.     Ввод размеров матриц
X
,
Y
.
В данном блоке определён ввод размеров квадратных матриц X, Y (t – размер матриц).

Имя подпрограммы: VVOD



Входные параметры: количество элементов t*t


    I=1(1)t




   J=1(1)t



Ввод элементов


Выходные параметры: X – матрица размером t*t.


  Рис.11. Детализация блока 2                                      

              схемы алгоритма.                                            
                                                                                                 


Имя подпрограммы UMN

Входные параметры: X, Y – матрицы размером t*t


I=1(1)t

        J=1(1)t



S=0

      K=1(1)t



S=S+X[i,k]*Y[k,j]

C[i,j]=S

Выходные параметры: матрица Z размером t*t

Рис. 13. Детализация блока 4

схемы алгоритма

2.      Ввод элементов можно представить соответствующей подпрограммой, структурограмма которой приведена на рис.11. Всего должно быть выведено t*t значений для каждого массива.


3.     Печать элементов матриц
X
,
Y
 (а также отладочная печать). В данном блоке определёна печать значений элементов квадратных матриц X, Y размером t*t.

4.     Умножение матриц удобно представить следующей подпрограммой, структурограмма которой приведена на рисунке 13.

5.     Сложение матрицы X и матрицы Y представлено в виде подпрограммы на рис.15.




6.     Подпрограммы формирования вектора из сумм элементов выше и ниже главной диагонали представлена структурограммой на рисунке 16 и 17.



Имя подпрограммы OVER

Входные параметры: X – матрица, размером t*t


S=0

I=1(1)t–1



J=i+1(1)t

 S=S+X[i,j]



Выходные параметры:

Y – матрица размером t.

Рис. 16. Детализация блока 8

схемы алгоритма

Имя подпрограммы: SUMMA


Входные параметры: X, Y – матрицы, размером t*t


    I=1(1)t




   J=1(1)t



Z[i,j]=X[i,j]+Y[i,j]

Выходные параметры: Z – матрица размером t*t.


Рис. 15. Детализация блока 7 схемы алгоритма


После каждой подпрограммы производится отладочная печать, представленная отдельной подпрограммой, структурограмма которой изображена на рис. 18.



Имя подпрограммы UNDER

Входные параметры: X – матрица, размером t*t


S=0

I=2(1)t



J=1(1)i-1

 S=S+X[i,j]



Выходные параметры:

Y – матрица размером t.

Рис. 17. Детализация блока 8

схемы алгоритма



Имя подпрограммы: Echo


Входные параметры: X – матрица, размером t*t


     I=1(1)t




    J=1(1)t



Вывод элементов


Выходные параметры: Y – матрица размером t*t.


Рис. 18. Детализация подпрограммы вывода элементов



1. Курсовая Система налогообложения сельскохозяйственных товаропроизводителей и ее особенности
2. Реферат Планирование в ОВД
3. Реферат на тему Cosmology Essay Research Paper Cosmology has always
4. Курсовая Издержки обращения в торговле и их прогнозирование
5. Реферат Управление психологической войной в системе государственной информационной политики
6. Реферат Гусев, Владимир Елизарович
7. Статья Курс Основы естествознания, православный взгляд
8. Реферат Микробиология рыбы
9. Контрольная работа на тему Особенности выращивания крупного рогатого скота свиней и птицы
10. Контрольная работа Медики и самодержцы загадка смерти Николая I