Процедура 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. Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М., 1991. 4. Мизрохи С.В. TURBO PASCAL и объектно-ориентированное программирование. М., 1992. 5. Прайс Д. Программирование на языке Паскаль: Практическое руководство. М., 1987. 6. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М., 1997. 7. Фирменная документация и компьютерные справочники (файлы помощи типа HELP).
ЛИСТИНГ ПРОГРАММЫ Work4.pas Program 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.
ПРИЛОЖЕНИЕ 2 Пример выполнения контрольной работы № 1 ЛИСТИНГ ПРОГРАММЫ Work1.pas program Work1; { Вычислить вариант
30) arctg(b) + c*b - a/4 x= ------------------------ 12*c + a - b } Uses CRT; Label L1; Var a,b,x,x1,x2 : Real; c : Integer; ch : Char;
{Вычисление знаменателя с проверкой его на ноль} function Flag (a,b:real; c:Integer; Var x2:Real) : Boolean; Begin Flag:=True; x2:= 12.0*c + a - b; {12*c приведет к ошибке при c>abs(32767.0/12)} if x2=0 then Begin Writeln('Деление на ноль!!!!!!!! Повторите ввод.'); Flag:=False; Exit; End; End; {Вычисление арифметического выражения} function F (a,b,x2:real; c:Integer) : Real; Var x1 : Real; Begin x1:= ArcTan(b)+c*b-a/4; F:=x1/x2 End; {Ввод значения переменной С c проверкой его на допустимый диапазон} Procedure InputC(Var c:integer); Var cL:Real; Begin Repeat Write('Введите значение c=====>'); Readln(cL); Until (cL>=-32768)and(cL<=32767); c:=trunc(cL) End; {Главная программа} Begin Repeat ClrScr; Writeln(' Вариант 30'); Writeln(' arctg(b) + c*b - a/4'); Writeln(' x= ------------------------'); Writeln(' 12*c + a - b'); Writeln; L1: Write('Введите значение a=====>'); Readln(a); Write('Введите значение b=====>'); Readln(b); InputC(c); if Flag(a,b,c,x2) then Writeln ('x=',F(a,b,x2,c)) else goto L1; Writeln('Опять? (y/n)'); ch:=ReadKey; Until (ch='n') or (ch='N'); End. Рассмотрим поэтапное выполнение контрольной работы №1. В данном задании необходимо вычислить значение арифметического выражения (вариант 30), которое является частным от деления выражения в числителе на выражение в знаменателе. Для получения результата необходимо сделать следующее: 1. Ввести значения переменных, входящих в это выражение ( a, b, c). 2. Проверить находятся ли целочисленные переменные (в данном случае только c) в диапазоне допустимых значений. 3. Вычислить знаменатель с проверкой его на ноль (т.к. деление на ноль НЕДОПУСТИМО). 4. Вычислить выражение. 5. Вывести результат вычисления. Программе присвоено имя Work1, имя файла - Work1. pas: · В фигурных скобках написаны комментарии - в данном случае номер варианта и вид выражения. · Далее после зарезервированного слова Uses написано имя стандартного модуля среды Turbo Pascal - CRT (подробнее - см. Прил. 9). · Затем описана метка L1. · В поле описания Var переменные a,b,x,x1,x2 объявлены как Real, переменная с как Integer, переменная ch как Char ( типы данных - см. [4]). · Далее идут описания функций Flag, F и процедуры InputC. · Записана главная программа, которая вызывает нужные процедуры и функции, согласно алгоритму решения задачи. Вычислим знаменатель с проверкой его на ноль с помощью функции Flag (основные понятия функции и процедуры даны в [4]). Функция Flag описана как Boolean и принимает два значения True (если знаменатель НЕ равен нулю) или False (если знаменатель равен нулю). В заголовке функции используем формальные параметры: · входные переменные a,b,c, значения которых передаются из основной программы в функцию Flag; · выходную переменную x2, значение которой вычисляется (это - знаменатель выражения) и передается в основную программу.
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему стероиды повышают давление?: Основных причин три... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (235)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |