Мегаобучалка Главная | О нас | Обратная связь


Процедура Evaluate (k:integer; A:arrayA)



2020-02-03 212 Обсуждений (0)
Процедура Evaluate (k:integer; A:arrayA) 0.00 из 5.00 0 оценок




          Служит для вычисления и выдачи на экран среднего арифметического каждого из столбцов квадратной матрицы 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, значение которой вычисляется (это - знаменатель выражения) и передается в основную программу.




2020-02-03 212 Обсуждений (0)
Процедура Evaluate (k:integer; A:arrayA) 0.00 из 5.00 0 оценок









Обсуждение в статье: Процедура Evaluate (k:integer; A:arrayA)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (212)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)