Как правильно передать значение функции в последующие процедуры во входных параметрах.

мария71

у меня есть код программы в которой нужно упорядочить строки матрицы построчно по возрастанию.я сделала из нее программу с процедурами и функциями.с помощью функции я ввожу размер матрицы и не знаю как правильно передать значение функции в последующие процедуры во входных параметрах.
Program fgh;
Const
  N=5;
  M=10;
type
  mas=array[1..N,1..M] of integer;
var
  matr:mas;
  razm1,razm2:integer;
{----------------------------------------------------------------}
 
Function Vvod(B:integer):integer;
var
max:integer;
s:string;
er:integer;
 
begin
repeat
  readln(s);
  val (s,max,er);
  if er<>0 then
     writeln('Вы ошиблись.Введите число')
  else
    if max>B then
       writeln('Ошибка. Значение должно быть < = B');
until(er=0) and (max<=B);
Vvod:=max;
end;
 
 
{----------------------------------------------------------------}
 
Procedure Inp(nmax,mmax:integer; var a:mas);
var
  i:integer;
  j:integer;
begin
   for i:=1 to nmax do
     for j:=1 to mmax do
     begin
       write('Ввод матрицы *[', i,',', j,']:');
       readln(a[i,j]);
     end;
end;
{-----------------------------------------------------------------}
 
Procedure Out(nmax,mmax:integer; a:mas);
var
  i:integer;
  j:integer;
begin
writeln('Вывод матрицы**');
   begin
   for i:=1 to nmax do
     begin
       for j:=1 to mmax do
         write (a[i,j]:4,'  ');
         writeln;
     end;
   end;
end;
{-----------------------------------------------------------------}
 
Procedure Ypor(nmax,mmax:integer; a:mas);
var
  k:integer;
  temp:integer;
  i:integer;
  j:integer;
begin
   writeln('Упорядоченная матрица*: ');
   for i:= 1 to nmax do
     for j:=mmax-1 downto 1 do
       for k:=1 to j do
         if a[i,k]>a[i,k+1] then
         begin
           temp:= a[i,k];
            a[i,k] := a[i,k+1];
            a[i,k+1] :=temp;
         end;
   for i := 1 to nmax  do
     begin
       for j := 1 to mmax do
       write(a[i,j]:4, ' ');
       writeln;
     end;
end;
 
{-----------------------------------------------------------------}
{Главная программа}
begin
write('‚ўҐ¤ЁвҐ  n=');
razm1:=Vvod(N);
write('‚ўҐ¤ЁвҐ  m=');
razm2:=Vvod(M);
Inp(razm1,razm2,matr);
Out(razm1,razm2,matr);
Ypor(razm1,razm2,matr);
end.
1 ответ

мария71

Непонятно зачем это нужно, вводили бы размеры в процедуре Inp.
Program fgh;
Const
  N=5;
  M=10;
type
  mas=array[1..N,1..M] of integer;
var
  matr:mas;
  razm1,razm2:integer;
{----------------------------------------------------------------}
 
Function Vvod(B,k:integer):integer;
var
max:integer;
s:string;
er:integer;
 
begin
repeat
  write('Введите размер ',k,' ');
  readln(s);
  val (s,max,er);
  if er<>0 then
     writeln('Вы ошиблись.Введите число')
  else
    if max>B then
       writeln('Ошибка. Значение должно быть < = B');
until(er=0) and (max<=B);
Vvod:=max;
end;
 
 
{----------------------------------------------------------------}
 
Procedure Inp(nmax,mmax:integer; var a:mas);
var
  i:integer;
  j:integer;
begin
   for i:=1 to nmax do
     for j:=1 to mmax do
     begin
       write('Ввод матрицы *[', i,',', j,']:');
       readln(a[i,j]);
     end;
end;
{-----------------------------------------------------------------}
 
Procedure Out(nmax,mmax:integer; a:mas);
var
  i:integer;
  j:integer;
begin
writeln('Вывод матрицы**');
   begin
   for i:=1 to nmax do
     begin
       for j:=1 to mmax do
         write (a[i,j]:4,'  ');
         writeln;
     end;
   end;
end;
{-----------------------------------------------------------------}
 
Procedure Ypor(nmax,mmax:integer; a:mas);
var
  k:integer;
  temp:integer;
  i:integer;
  j:integer;
begin
   writeln('Упорядоченная матрица*: ');
   for i:= 1 to nmax do
     for j:=mmax-1 downto 1 do
       for k:=1 to j do
         if a[i,k]>a[i,k+1] then
         begin
           temp:= a[i,k];
            a[i,k] := a[i,k+1];
            a[i,k+1] :=temp;
         end;
   for i := 1 to nmax  do
     begin
       for j := 1 to mmax do
       write(a[i,j]:4, ' ');
       writeln;
     end;
end;
 
{-----------------------------------------------------------------}
{Главная программа}
begin
razm1:=Vvod(N,1);
razm2:=Vvod(M,2);
Inp(razm1,razm2,matr);
Out(razm1,razm2,matr);
Ypor(razm1,razm2,matr);
end.