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

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

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

Программа 7

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

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

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

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

program Prg7;
{ http://nataliya.kiev.ua }
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.

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

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 [(<формальные параметры>)]:<тип результата>;

Случайный анекдот

Классификация оценок:
- ОТЛ - обманул тов. лектора.
- ХОР - хотел обмануть разоблачили.
- УД - удалось договориться.
- НЕУД - не удалось договориться.
Дата: 05-05-2005   Автор: Admin   Подрубрика: Разное