• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите переписать программу через процедуру

  • Автор темы Автор темы neio
  • Дата начала Дата начала

neio

Стандартный
Регистрация
30 Ноя 2008
Сообщения
619
Реакции
16
Баллы
0
Помогите переписать программу через процедуру

Необходимо определить абсолютную величину разности максимальных элементов двух заданных столбцов матрицы А(n,n).

Код:
Const nmax=20;
Var A:array[1..nmax,1..nmax] of real;
    i,j,ik1,ik2,n:integer;
    sr,max1,max2:real;
Begin

     write('Количество строк и столбцов: ');readln(n);
    
    For i:=1 to n do
    Begin
      For j:=1 to n do
      Begin
        A[i,j]:=random*10-5;
        write(A[i,j]:6:2);
      End;
      writeln;
    End;
    Repeat
     write('Индекс первого столбца: ');readln(ik1);
    Until ik1 in [1..n];
    Repeat
     write('Индекс второго столбца: ');readln(ik2);
    Until ik2 in [1..n];
    max1:=A[1,ik1];
    For i:=2 to n do 
     if A[i,ik1]>max1 then max1:=A[i,ik1];
    max2:=A[1,ik2];
    For i:=2 to n do 
     if A[i,ik2]>max2 then max2:=A[i,ik2];
    writeln('Max1 = ',max1:0:2);
    writeln('Max2 = ',max2:0:2);
    writeln('Абсолютная величина разности максимальных элементов: ',abs(max1-max2):0:4);
    readln;
End.

Надо записать код вычисления результата, через процедуру.
Пытался сделать сам, но запутался на передаче исходного массива в процедуру. Помогите переписать, пожалуйста. Заранее большое спасибо.
 
Надо записать код вычисления результата, через процедуру. Пытался сделать сам, но запутался на передаче исходного массива в процедуру. Помогите переписать, пожалуйста. Заранее большое спасибо. neio вне форума Добавить отзыв для neio Добавить нарушение neio Пожаловаться на это сообщение IP
Пожалуйста, Дима. Например, так.
Только сначала - две ремарки.
1. Если в программе предполагается передача массива в подпрограмму, то следует тип такого массива переопределить, как это сделано у меня.
2. Если используется генератор случайных чисел, то НЕ ЗАБЫВАЕМ в начале программы ставить команду Randomize; Без этого он будет выдавать одно и то же каждый раз.

Код:
Const nmax=20;

Type
 Matrix=array[1..nmax,1..nmax] of real;

Var
 A:Matrix;
 jk1,jk2,n:integer;
 max1,max2:real;

Procedure Input_A(Ni:Integer; var Q:Matrix);
var i,j:Integer;
begin
 for i:=1 to Ni do
  begin
   for j:=1 to Ni do
    begin
     Q[i,j]:=random*10-5;
     write(Q[i,j]:6:2);
    end;
   writeln;
  end;
end;

Function Find_Max(p:Integer; Q:Matrix):Real;
var i:Integer; max:Real;
begin
 max:=Q[1,p];
 for i:=2 to n do
  if Q[i,p]>max then max:=Q[i,p];
 Find_Max:=max;
end;

Begin
 Randomize;
 write('Number of lines and columns: ');
 readln(n);
 writeln;
 Input_A(n,A);
 writeln;
 Repeat
  write(' First column index: ');
  readln(jk1);
 Until jk1 in [1..n];
 Repeat
  write('Second column index: ');
  readln(jk2);
 Until jk2 in [1..n];
 writeln;
 max1:=Find_Max(jk1,A);
 max2:=Find_Max(jk2,A);
 writeln('Max1 = ',max1:0:2);
 writeln('Max2 = ',max2:0:2);
 writeln;
 writeln('Absolute difference between maxima: ',abs(max1-max2):0:4);
 readln
End.
 
Пожалуйста, Дима. Например, так.
Только сначала - две ремарки.
1. Если в программе предполагается передача массива в подпрограмму, то следует тип такого массива переопределить, как это сделано у меня.
2. Если используется генератор случайных чисел, то НЕ ЗАБЫВАЕМ в начале программы ставить команду Randomize; Без этого он будет выдавать одно и то же каждый раз.

1. Понял.

2. А я как раз и забыл, стыд и срам tehno013

Спасибо за помощь. tehno006
 
Назад
Сверху