TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

ПРИЛОЖЕНИЕ  5

пример выполнения контрольной работы № 4

ЛИСТИНГ ПРОГРАММЫ Work4.pas - см. Прил. 1.

В контрольной работе № 4 задана квадратная матрица А размером N * N (N<=10), состоящая из действительных элементов. Необходимо найти среднее арифметическое значение элементов каждого из столбцов этой матрицы.

Имя программы - WORK4.

·       В поле описания библиотек и констант заданы  стандартный модуль CRT, определена константа N=10.

·       Описан собственный тип данных  ArrayA для описания массива размером N * N, элементы которого имеют тип Real, -  Type ArrayA=Array[1..N,1..N] of Real.

·       Описаны переменные: целочисленная k: Integer,  массив A:ArrayA; символьная переменная ch: char.

·       Далее идут описания процедур InputN, InputMatrix, OutputMatrix, и Evaluate.

·       Записана главная программа, которая вызывает нужные процедуры и функции, согласно алгоритму решения задачи.

Описание процедуры InputN

¨    В заголовке процедуры описан один формальный параметр:

               выходное k (значение определяется в процедуре и передается в основную про-                        грамму).                                

¨    В цикле Repeat ...Until (K<=N) and (K>1) вводится значение переменной K - Readln(K) с проверкой (т.е. вводимое K  должно быть больше единицы  и меньше либо равно N - заданному по условию максимальному значению размера массива А). Затем управление передается в основную программу.

 

Описание процедуры InputMatrix.

¨    В заголовке процедуры описаны параметры: K - входной параметр, передаваемый из основной программы, и  A -выходной параметр (массив вводимых в процедуре элементов матрицы А).

¨    Описаны локальные целочисленные переменные i (счетчик числа строк), j (счетчик числа столбцов) - integer.

¨    В процедуре в двойном  цикле for  по переменным i, j вводятся значения элементов массива А[I,J]: Readln(A[I,J].

¨    Затем управление передается основной программе.

 

Описание процедуры OutputMatrix.

Поскольку алгоритм вывода матрицы структурно ничем не отличается от алгоритма ее ввода (см. Соответствующие блок-схемы в прил. 1), то и оформление процедуры почти одинаково. Обратите, пожалуйста, внимание на то, что массив А - теперь параметр входной ( т.е. известный), поэтому ключевое слово Var  отсутствует. В двойном цикле for реализован построчный вывод  на экран исходной матрицы. В формате вывода под выводимое значение элементов матрицы отводится 7 позиций, в том числе две позиции для вывода дробной части:

                                                 Write(A[i,j]:7:2,’ ‘).  

Следующий оператор вывода без параметров Writeln  позволяет закончить вывод одной строки матрицы и перейти на следующую.

 

Описание процедуры Evaluate.

¨    В заголовке процедуры описаны параметры: K, A как входные  параметры.

¨    Описаны локальные переменные i (счетчик числа строк), j (счетчик числа столбцов) как integer  и  stolb (вещественный массив длиной  N - array [1..N] of Real), sr (рабочая  переменная типа Real для подсчета суммы элементов в данном столбце).

¨    В двойном цикле for считается среднее арифметическое значение для каждого столбца и сохраняется в одномерном массиве  Stolb:

1)    цикл начинается по столбцам j от 1 до k ;

2)   затем  в цикле по строкам i считается сумма элементов в данном столбце sr;

3)   и вычисляется среднее арифметическое значение для каждого столбца путем деления вычисленной суммы на количество строк Stolb[j]:=sr/k.

¨    Значение элементов одномерного массива среднего арифметического значения столбцов Stolb[j] в цикле for выводится на экран.

Замечание.  Средние арифметические значения каждого из столбцов матрицы можно вычислять и тут же выдавать на экран. Этот вариант пригоден только тогда, когда значения средних арифметических больше ни для чего НЕ нужны (как в нашем случае). Тогда надобность в массиве Stolb и дополнительном цикле for отпадает. В этом случае подпрограмма Evaluate будет иметь следующий вид:

Procedure Evaluate(k:integer; A:arrayA);

Var i,j:integer;

       sr:real;

Begin

Writeln('------- Cреднее арифметическое каждого из столбцов -------');

for j:=1 to k do  {------- цикл по столбцам ------- }

    Begin

           sr:=0;

           for i:=1 to k do   {------- цикл по строкам ------- }

               sr:=sr+A[i,j]; {вычисление суммы элементов по столбцам

                                                     матрицы  A}

           Writeln ('Cтолбец [',j,']= ', sr/k :7:2);

    End;

End;

Описание главной программы

·       В теле основной программы в цикле Repeat ... Until очищается экран (ClrScr).

·       Путем вызова процедуры InputN(k) вводится значение k - фактическое число строк  и столбцов исходной матрицы A.

·       Путем вызова процедуры InputMatrix(k,A) вводим значения элементов исходной матрицы А.

·       Опять очищаем экран (ClrScr).

·       Через вызов процедуры OutputMatrix(k,A) выводим на экран значения элементов исходной матрицы А.

·       Через вызов процедуры Evaluate(k,A) определяем значения средних арифметических каждого из столбцов и выводим их на экран.

·       Затем следует запрос  «Опять? (Y/N)».

·       Переменной  ch присваивается значение нажатой клавиши ch:=ReadKey и в зависимости от ответа  управление передается или на начало цикла (ch:=’Y’) для повторного счета, но уже с другими исходными данными, или программа заканчивает выполнение (ch:= ‘N’).

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz