→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Pascal Разработка процедуры пользователя 
Автор Сообщение
Администратор
Аватара пользователя

Регистрация: 03.11.2007
Сообщения: 559
Откуда: Украина
Специальность:

Репутация: 6 [ ? ]
Сообщение Pascal Разработка процедуры пользователя
Разработать процедуру, что для предоставленной матрицы 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: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 [(<формальные параметры>)]:<тип результата>;

[i]


11.11.2007 18:56
Профиль ICQ
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»