Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

Задание№ 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. Реферат Фізична культура і спорт в умовах ринкової економіки
7. Реферат Aristotle On Politics Essay Research Paper The
8. Реферат на тему Kyrgyzstan Essay Research Paper Kyrgyzstan
9. Реферат Предложения по оптимизации кредитования в коммерческом банке
10. Реферат Конфуций 2