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

Форум программистов: 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 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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