Рейтинг@Mail.ru
Menu
Скачать картинки на телефон бесплатно.
Заставки для телефона, аватарки.
(Вырезать из фотографии)

Роза `Гренд Могул` Яхта `Алиса` Лесное озеро Музей `Пирогово` Белочка
Выберите рубрику (тему)

Разработка процедуры пользователя

Программирование на Паскале
Программа 7

Разработать процедуру, что для предоставленной матрицы m*n возвращает вектор-строку, сумма элементов которой наибольшая.


Алгоритм в виде диаграммы действий


Разработка процедуры пользователя. Программа 7. Разработать процедуру, что для предоставленной матрицы m*n возвращает вектор-строку, сумма элементов которой наибольшая.. Алгоритм в виде диаграммы действий


Текст программы


program Prg7;



{ http://nataliya.kiev.ua/?id=107 }



uses


  crt;

type


  TMatrix = array[1..15, 1..15] of integer;
  TVector = array[1..15] of integer;

var


  a: TMatrix;
  b: TVector;
  m, n: byte;

 

procedure InputMatrix(var A: TMatrix; m, n: byte);


 
var

    i, j: integer;
    q: char;
 
begin

    Write('Input by hand(y/n)?');
    ReadLn(q);
   
if (q = 'y') or (q = 'Y') then

      for i := 1 to m do
        for J := 1 to N do
          begin
            Write('A[', i, ',', j, ']=');
            ReadLn(a[i, j]);
          end
   
else

      begin
        Randomize;
        for i := 1 to m do
          for j := 1 to n do
            a[i, j] := Random(99);
      end;
  end;

 

procedure OutputMatrix(const a: Tmatrix; m, n: byte);


 
var

    i, j: byte;
 
begin

   
for i := 1 to m do

      begin
        for j := 1 to n do
          Write(a[i, j]:4);
        WriteLn;
      end;
  end;

 

procedure Vector(const a: TMatrix; var b: tvector; m, n: byte);


 
var

    i, j, imax: byte;
    smax, s: integer;
 
begin

    smax := 0;
   
for i := 1 to m do

      begin
        s := 0;
        for j := 1 to n do
          s := s + a[i, j];
        if smax < s then
          begin
            smax := s;
            imax := i;
          end;
      end;
    for j := 1 to n do
      b[j] := a[imax, j];
  end;

 

procedure OutputVector(a: TVector; n: byte);


 
var

    i: byte;
 
begin

    Write('a=(');
   
for i := 1 to n do

      Write(a[i]: 3);
    WriteLn(' )');
  end;

begin


  ClrScr;
  Write('m=');
  ReadLn(m);
  Write('n=');
  ReadLn(n);
  InputMatrix(a, m, n);
  OutputMatrix(a, m, n);
  Vector(a, b, m, n);
  OutputVector(b, n);
  ReadKey;
end.

Print

Печатать текст программы!



Source code: «Разработка процедуры пользователя».

Редактировать, копировать

(WYSIWYG редактор «NicEdit»)
Загрузить файл с текстом программы: «Разработка процедуры пользователя». Печатать текст программы!

Загрузить файл с текстом программы

(Prg7.pas - Windows-1251)

Результат работы программы


1)
m=5
n=10
Input by hand(y/n)?n
  0 16 44 65 31 19 74 71 14 62
  1 66 32 0 38 66 60 95 15 79
  48 95 40 60 72 69 79 95 59 98
  36 48 98 94 80 3 77 54 71 98
  13 89 48 30 75 94 18 53 7 36
a=( 48 95 40 60 72 69 79 95 59 98 )

2)
m=7
n=2
Input by hand(y/n)?n
  52 51
  48 94
  75 9
  32 98
  42 17
  82 39
  40 51
a=( 48 94 )

3)
m=4
n=4
Input by hand(y/n)?y
A[1,1]=1
A[1,2]=1
A[1,3]=1
A[1,4]=1
A[2,1]=2
A[2,2]=3
A[2,3]=2
A[2,4]=3
A[3,1]=10
A[3,2]=15
A[3,3]=12
A[3,4]=11
A[4,1]=0
A[4,2]=4
A[4,3]=2
A[4,4]=3
  1 1 1 1
  2 3 2 3
  10 15 12 11
  0 4 2 3
a=( 10 15 12 11 )

Теория к программе


Процедуры и функции пользователя



  Процедура - независимая именованная часть программы, предназначенная для многоразового выполнения определенных действий.

    Содержит заголовок и тело. Внутренняя структура совпадает с структурой программы. После того, как процедура описана, она может быть многократно вызвана из любой части программы. После выполнения определенных в процедуре действий, управление передается следующему за вызовом процедуры оператору. Имя процедуры в операторной части программы есть отдельный оператор, поэтому вызов процедуры не может помещаться в выражениях как операнд.

   

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



 
Структура
:

   
<заголовок>

   
<локальные описи>
- может содержать опись других процедур и функций
   
<операторна часть>


 

<заголовок>

:

   
procedure <имя-идентификатор>[(<список параметров>)];


   
<имя-идентификатор>
- отвечает общим правилам образования идентификаторов;
   
<операторна часть>
- должна содержать один или несколько операторов;
   
<список параметров>
включает:

      1)
параметр-значение
:

      <идентификатор>:<тип> - обрабатывается как локальная переменная по отношению к данной функции, то есть измененное в теле функции значение этого параметра не возвращается к блоку, который вызвал функцию;

      2)
параметр-переменная
:

      var <идентификатор>:<тип> - измененное в середине программы значение этого параметру возвращается к блоку, который вызовет функцию

      3)
нетипизированный параметр-переменная


      var <идентификатор> - такая опись формального параметра разрешает выполнить ссылки на переменную любого типа. При этом тип переменной отсутствует, то есть не совпадает ни с одним из типов до операции приведения типов

   
<тип>
- в заголовке непосредственно может быть определен только простой тип. Любой стуктурированный тип определяется только через идентификатор типа

 

Правила локализации



    1.
Идентификатор определен только в границах блока, в котором он описан

    2.
Одинаковые идентификаторы могут быть по-разному определены в разных блоках

    3.
Если в операторе используется идентификатор, который был описаний в ряде вложенных блоков, то он интерпретируется в соответствии с его описью в самом внутреннем из вложенных блоков, в котором данный оператор находится
.
    4.
На равные блоки идентификатор может быть описан только один раз


 

Процедура или функция может быть вызвана:



    1.
Из тела главной программы

    2.
Из тела другой процедуры или функции

    3.
Из тела той самой процедуры или функции - рекурсия


 

Процедурные типы



   
Используются
:

      1)
при определении процедурных переменных
;
      2)
при построении структурированных типов
;
      3)
при использовании процедур или функций как параметров для других процедур или функций


 

Описание

:

    TYPE <идентификатор> = procedure [(< формальные параметры >)];
    TYPE <идентификатор> = function [(< формальные параметры >)]:<тип результата>;


Дата: 2007-11-03   Автор: Admin
Случайный анекдот

На экзамене профессор возмущается:
- Можно ли так ничего не знать?!
- Простите, профессор, я думал, что экзамен завтра!
Дата: 05-05-2005   Автор: Admin   Подрубрика: Сессия