Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 24.6.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. Реферат Порівняльна ЕГХ Єгипту Нігерії та ПАР
4. Отчет по практике на тему Технология изготовления СВЧ на ККБ Искра
5. Реферат Эпоха Ивана Грозного
6. Реферат на тему Управленческие решения 3
7. Реферат на тему Nuclear Weaons Destructors Or Saviors Essay Research
8. Курсовая Криминологическая характеристика и профилактика преступлений связанных с наркотизмом
9. Биография на тему Биография Владимира Владимировича Маяковского
10. Реферат Альенде, Сальвадор