TURBO PASCAL |
Новости |
ПРИЛОЖЕНИЕ 1ПОСТАНОВКА ЗАДАЧИВариант 1.Задана квадратная матрица A размером N x N (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждого из столбцов этой матрицы. ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕДля обработки матриц в задании применены вложенные операторы ЦИКЛА СО СЧЕТЧИКОМ
: for <идентификатор>:=<нач. значение счетчика> to < конечное значение счетчика > do <оператор> Для проверки размерности матрицы (k<=N) применен оператор ЦИКЛА ПОВТОРИТЬ :
Repeat
<оператор>; ... <оператор>; Until <условие выхода из цикла>; Ввод фактического количества строк и столбцов квадратной матрицы A (k<=N), ввод-вывод элементов матрицы А и вычисление среднего арифметического каждого из столбцов матрицы реализовано через соответствующие процедуры: InputN, I.nputMatrix, OutputMatrix, Evaluate с параметрами (см. Листинг программы Work4.pas). Выходные параметры передаются через атрибут Var. Используются две стандартные подпрограммы модуля CRT: ¨
Для очистки экрана - процедура
ClrScr.
¨
Для ввода символа (в данном случае n или N) - функция ReadKey. ОПИСАНИЕ ПРОГРАММЫПрограмма написана на алгоритмическом языке ПАСКАЛЬ и реализована в среде Borland Pascal-7.0 Windows 95/MS DOS-7.0, процессор Pentium. Программа состоит из главной программы и четырех подпрограмм (InputN, InputMatrix, OutputMatrix, Evaluate), объединенных в единый модуль WORK4.pas. Из главной программы вызываются внешние подпрограммы стандартного модуля CRT: ClrScr, ReadKey. ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ
Описание алгоритма решения задачи - см. Стр. 18 - 22.ОПИСАНИЕ ВХОДНЫХ ДАННЫХ
k
- фактическое количество строк и столбцов матрицы (k<=N) - переменная
типа
INTEGER; A - квадратная матрица, состоящая из вещественных элементов (типа REAL): A:
array[1..N,1..N] of real. ОПИСАНИЕ ВЫХОДНЫХ ДАННЫХStolb: array[1..N] of real - локальный массив средних арифметических значений элементов каждого из столбцов матрицы A - вычисляется и выводится в процедуре Evaluate. ОПИСАНИЕ ПОДПРОГРАММПроцедура InputN (Var k:integer)Служит для ввода фактического количества строк и столбцов квадратной матрицы A (1<k<=N). Процедура
InputMatrix (k:integer; Var A:arrayA)
Служит для ввода значений вещественных элементов матрицы A типа ArrayA (ArrayA=array[1..N,1..N] of real) длиной k*k. Процедура
OutputMatrix (k:integer; A:arrayA)
Служит для вывода значений вещественных элементов квадратной матрицы A типа ArrayA длиной k*k. Процедура Evaluate
(k:integer; A:arrayA)
Служит для вычисления и выдачи на экран среднего арифметического каждого из столбцов квадратной матрицы A типа ArrayA длиной k*k.
Введите значение N=====>3 ------- Исходная матрица ------- 1111.00 2222.00 3333.00 1111.00 2222.00 3333.00 1111.00 2222.00 3333.00 ------- Cреднее арифметическое каждого из столбцов ------- Cтолбец [1]= 1111.00 Cтолбец [2]= 2222.00 Cтолбец [3]= 3333.00 Введите значение N=====>2 ------- Исходная матрица ------- 1.00 2.00 3.00 4.00 ------- Cреднее арифметическое каждого из столбцов ------- Cтолбец [1]= 2.00 Cтолбец [2]= 3.00 Введите значение N=====>4 ------- Исходная матрица ------- 111222.00 222333.00 333444.00 444555.00 555.00 555666.00 666777.00 777888.00 888999.00 999.00 111999.00 222888.00 333777.00 444666.00 555555.00 123456.00 ------- Cреднее арифметическое каждого из столбцов ------- Cтолбец [1]= 333638.25 Cтолбец [2]= 305916.00 Cтолбец [3]= 416943.75 Cтолбец [4]= 392196.75 Список использованной литературы1. Абрамов С.А., Зима Е.В. Начала информатики. М., 1989. 2. Вирт Н. Алгоритмы + структуры данных = программы. М., 1985. 3. Голубь Н.Г., Кириленко Е.Г. Алгоритмические языки и программирование: Учебное пособие, часть 1. ХАИ, 1997. 4. Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М., 1991. 5. Мизрохи С.В. TURBO PASCAL и объектно-ориентированное программирование. М., 1992. 6. Прайс Д. Программирование на языке Паскаль: Практическое руководство. М., 1987. 7. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М., 1997. Фирменная документация и компьютерные справочники (файлы помощи типа HПРИЛОЖЕНИЕЛИСТИНГ ПРОГРАММЫ Work4.pasProgram
Work4; Uses
CRT; Const
N=10; Type
ArrayA=array [1..N,1..N] of real; Var
k : integer;
A: ArrayA;
ch : char;
{ ввод фактического количества
k строк и
столбцов квадратной
матрицы A
} Procedure
InputN(Var k:integer); Begin
Repeat
Write('Введите значение
N=====>');
Readln(k);
Until (k<=N) and (k>1); End;
{ ввод значений вещественных
элементов матрицы A
} Procedure
InputMatrix(k:integer;Var A:arrayA); Var
i,j:integer; Begin
for i:=1 to k do
for j:=1 to k do Begin Write('Введите значение элемента матрицы A[',i,',',j,']=====>');
Readln(A[i,j]); End; End; { вывод значений вещественных элементов матрицы A } Procedure
OutputMatrix(k:integer; A:arrayA); Var
i,j:integer; Begin Writeln(' ------- Исходная матрица -------'); for
i:=1 to k do
Begin
for j:=1 to k do
Write(A[i,j]:7:2,' ');
Writeln;
End; End; {вычисление и выдача на экран среднего арифметического каждого из столбцов квадратной
матрицы A} Procedure
Evaluate(k:integer; A:arrayA); Var
i,j:integer;
stolb:array [1..N] of real;
sr:real; Begin
for j:=1 to k do
Begin
sr:=0;
for i:=1 to k do sr:=sr+A[i,j]; {вычисление суммы элементов по столбцам матрицы A}
Stolb[j]:=sr/k; End; Writeln('------- Cреднее арифметическое каждого из столбцов -------'); for
j:=1 to k do
Writeln ('Cтолбец
[',j,']= ',Stolb[j]:7:2); End; {Главная программа} Begin
Repeat
ClrScr;
InputN(k);
InputMatrix(k,A);
ClrScr;
OutputMatrix(k,A);
Evaluate(k,A);
Writeln('Опять?
(y/n)');
ch:=ReadKey;
Until (ch='n') or (ch='N'); End.
|
![]()
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |