Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2010, 16:30   #1
kjiokl
Новичок
Джуниор
 
Регистрация: 14.03.2010
Сообщений: 3
По умолчанию Упорядочить матрицы

Здравствуйте!У меня такая проблемка.....
дали задачу .....

Условие: Заданны три матрицы первая размерностью два на два вторая три на три третья два на два.Упорядочить по убыванию три числа x,y,z,где x-максимальный элемент матрицы 1 Y-матрицы 2 а Z vfnhbws 3.Поиск максимального элемента оформить в виде подпрограммы процедуры.


Я написал программу текст ниже но преподаватель просит чтобы вывод который я вывожу в label6 был написан в подпрограмме а не в основной программе....Господа если не сложно скажите как исправить сам пробовал не получается.....


Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
   SG4.Cells[0,0]:=' Число';
   SG4.Cells[1,0]:=' Значение';
end;

procedure TForm1.Button1Click(Sender: TObject);
  const nm=5;
  type
   matr=array[1..nm,1..nm] of real;
  vect=array[1..nm] of real;
   Procedure Pmax(n:integer; Z:matr; var MaxZ:real);
   var
   a,b,c:matr;

    M:vect;

    i,j:integer;


  begin
  maxZ:=z[1,1];
     for i:=1 to n do
     for j:=1 to n do
          if z[i,j] > maxZ then maxZ:=z[i,j];

      end;
   var
        i,j,k:integer;
    ss:char;
    a,b,c:matr;
    x,y,z,t:real;
    m:vect;
    s:array[1..nm] of char;
begin
    for i:=1 to 2 do
     for j:=1 to 2 do
      begin
    a[i,j]:=strtofloat(SG1.Cells[j-1,i-1]);
    c[i,j]:=strtofloat(SG3.Cells[j-1,i-1]);
      end;
      for i:=1 to 3 do
     for j:=1 to 3 do
    b[i,j]:=strtofloat(SG2.Cells[j-1,i-1]);
      Pmax(2,a,x);
      Pmax(3,b,y);
      Pmax(2,c,z);
     Label5.Caption:='X(max) Матрицы А = '+floattostr(x)+#13+
                     'Y(max) Матрицы B = '+floattostr(y)+#13+
                     'Z(max) Матрицы С = '+floattostr(z);
                     m[1]:=x; m[2]:=y; m[3]:=z;
                     s[1]:='X'; s[2]:='Y'; s[3]:='Z';
          for k:=1 to 2 do
          for i:=3 downto k+1 do
           if m[i] > m[i-1] then
            begin
          t:=m[i]; ss:=s[i];
          m[i]:=m[i-1]; s[i]:=s[i-1];
          m[i-1]:=t; s[i-1]:=ss;
            end;
          for i:=1 to 3 do
           begin
        SG4.Cells[0,i]:=s[i];
        SG4.Cells[1,i]:=floattostr(m[i]);
           end;
end;

end.

Последний раз редактировалось AlDelta; 14.03.2010 в 23:08.
kjiokl вне форума Ответить с цитированием
Старый 14.03.2010, 21:41   #2
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Намекну: У тебя есть 3 числа. Ты их получаешь независимые друг от друга. Внеси ту часть программы, смысл которой требуется внести в процедуру. Процедура как ты знаешь, выполняет действия, ей нужно только передать аргументы. Эта процедура будет создавать свой массив и сортировать элементы как тебе надо и конечно выводить. Эти аргументы и будут твои полученные 3 числа. Понял?
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 14.03.2010, 22:16   #3
kjiokl
Новичок
Джуниор
 
Регистрация: 14.03.2010
Сообщений: 3
По умолчанию

смутно.....Вы не могли бы сразу на примере кода показать?Я код выложил если можите исправте его .....Зарание спасибо....
kjiokl вне форума Ответить с цитированием
Старый 14.03.2010, 22:57   #4
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Код:
private
procedure vivod;


procedure TForm1.vivod;
begin
Label5.Caption:='X(max) Матрицы А = '+floattostr(x)+#13+
'Y(max) Матрицы B = '+floattostr(y)+#13+
'Z(max) Матрицы С = '+floattostr(z);

end;
Только для данного случая нужно сделать переменные x,y,z глобальными.
Вместо
Цитата:
Label5.Caption:='X(max) Матрицы А = '+floattostr(x)+#13+
'Y(max) Матрицы B = '+floattostr(y)+#13+
'Z(max) Матрицы С = '+floattostr(z);
Пиши vivod;
keef вне форума Ответить с цитированием
Старый 15.03.2010, 16:33   #5
kjiokl
Новичок
Джуниор
 
Регистрация: 14.03.2010
Сообщений: 3
По умолчанию

Увожаемый Keef!Спасибо большое за совет!!!Но дело в том что этот вывод должен быть не отдельной подпрограммой а должен быть записанн именно в той которая уже есть в моём коде.....Я уже всё перепробовал не получается....Видимо я чегото не допонимаю .....
kjiokl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить столбцы матрицы alexantonov Фриланс 7 15.10.2009 18:39
Упорядочить строку целочисленной прямоугольной матрицы Woodyy Паскаль, Turbo Pascal, PascalABC.NET 8 06.06.2009 17:15
Упорядочить матрицу J0n1cK Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2009 20:02
Помогите упорядочить строки матрицы по убыванию kitty Помощь студентам 1 06.12.2007 23:23