Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 05.04.2015, 02:10   #1 (permalink)
neio
Стандартный
 
Аватар для neio
 
Регистрация: 30.11.2008
Сообщений: 619
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 571
По умолчанию Помогите переписать программу через процедуру

Необходимо определить абсолютную величину разности максимальных элементов двух заданных столбцов матрицы А(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 вне форума   Ответить с цитированием

Старый 05.04.2015, 02:10
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Однородные проблемы уже обсуждались, пожалуйста, обратите на них внимание

Помогите заменить функцию на процедуру
Переписать ретро
Переписать двумерный масив в одномерный
Подскажите как на и на чем можно написать программу SMS рассылок через интернет?

Старый 05.04.2015, 09:40   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от neio Посмотреть сообщение
Надо записать код вычисления результата, через процедуру. Пытался сделать сам, но запутался на передаче исходного массива в процедуру. Помогите переписать, пожалуйста. Заранее большое спасибо. 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.04.2015, 12:39   #3 (permalink)
neio
Стандартный
 
Аватар для neio
 
Регистрация: 30.11.2008
Сообщений: 619
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 571
По умолчанию

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

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

Спасибо за помощь.
neio вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:47.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.