TURBO PASCAL |
Новости |
ПРИЛОЖЕНИЕ 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’). |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |