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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 22:44   #1
Dj_Leff
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 20
Стрелка [Pascal] Отформатировать матрицу

no subject

Последний раз редактировалось Dj_Leff; 11.04.2011 в 06:26.
Dj_Leff вне форума Ответить с цитированием
Старый 10.04.2011, 22:57   #2
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Код:
var
  b:array[1..n,1..m] of integer;  // твоя матрица
  el: Integer; // наибольший элемент
  i, j, k: Integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
       if b[i, j]  = el then
         begin
           for k:=1 to n do b[k, j]:=0; // обнуляем столбец j
           for k:=1 to m do b[i, k]:=0; // обнуляем строку i
         end;  
    end;
  end;
end;
что то типа этого?
RomiKon вне форума Ответить с цитированием
Старый 11.04.2011, 00:08   #3
SamBellamy
 
Регистрация: 28.06.2008
Сообщений: 6
По умолчанию

разбираться в вашем коде не стал, создал вот такой пример, надеюсь разберётесь
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  count_rows = 5;
  count_column = 4;

type
  MatrixArray = array [ 1 .. count_rows, 1 .. count_column ] of integer;

  MatrixSchemeRecord = record
    MaximumValue: integer;
    FormatMatrix: MatrixArray;
  end;

  //создаём матрицу
  function CreateRandomMatrix(): MatrixArray;
  var
    row_index, column_index: integer;
  begin
    for row_index := 1 to count_rows do
      for column_index := 1 to count_column do
        result[ row_index, column_index ] := random( 10 ) + 10;
  end;

  //показываем матрицу
  procedure ShowMatrix(matrix: MatrixArray);
  var
    row_index, column_index: integer;
  begin
    for row_index := 1 to count_rows do
    begin
      for column_index := 1 to count_column do
      begin
        write( matrix [ row_index, column_index ] : 3 );
      end;
      writeln;
    end;
    writeln;
  end;

  //обнуляем в матрице указанные колонки и строки
  function ZeroRowAndColumn(row, column: integer; matrix: MatrixArray): MatrixArray;
  var
    row_index, column_index, MaximumValue: integer;
  begin
    for row_index := 1 to count_rows do matrix[ row_index, column ] := 0;
    for column_index := 1 to count_column do matrix[ row, column_index ] := 0;
    result := matrix;
  end;

  //создаём форматировнную матрицу
  function CreateMatrixScheme(RandomMatrix: MatrixArray): MatrixSchemeRecord;
  var
    row_index, column_index: integer;
  begin
    result.MaximumValue := -1;
    for row_index := 1 to count_rows do for column_index := 1 to count_column do
    begin
      if RandomMatrix[ row_index, column_index ] > result.MaximumValue then
      begin
        //нашли новый макисмальный элемент, он ещё может изменится в будущем
        result.MaximumValue := RandomMatrix[ row_index, column_index ];
        //обнулям строки и столбцы
        result.FormatMatrix := ZeroRowAndColumn( row_index, column_index, RandomMatrix );
      end;
      //нашли ещё один максимальный элемент на данный момент
      if RandomMatrix[ row_index, column_index ] = result.MaximumValue then
      begin
        result.FormatMatrix := ZeroRowAndColumn( row_index, column_index, result.FormatMatrix );
      end;
    end;
  end;

  procedure ShowMatrixScheme(MatrixScheme: MatrixSchemeRecord);
  begin
    writeln(' Maximum value: ', MatrixScheme.MaximumValue );
    writeln(' Format matrix: ');
    ShowMatrix( MatrixScheme.FormatMatrix );
  end;

var
  RandomMatrix: MatrixArray;
  MatrixScheme: MatrixSchemeRecord;
begin
  randomize;
  RandomMatrix := CreateRandomMatrix;
  MatrixScheme := CreateMatrixScheme( RandomMatrix );
  ShowMatrix( RandomMatrix );
  ShowMatrixScheme( MatrixScheme );
end.
SamBellamy вне форума Ответить с цитированием
Старый 11.04.2011, 06:25   #4
Dj_Leff
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 20
По умолчанию

Цитата:
Сообщение от RomiKon Посмотреть сообщение
Код:
var
  b:array[1..n,1..m] of integer;  // твоя матрица
  el: Integer; // наибольший элемент
  i, j, k: Integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
       if b[i, j]  = el then
         begin
           for k:=1 to n do b[k, j]:=0; // обнуляем столбец j
           for k:=1 to m do b[i, k]:=0; // обнуляем строку i
         end;  
    end;
  end;
end;
что то типа этого?
О! Отлично! Спасибо огромное друг! Программа заработала так как надо!
Dj_Leff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить матрицу по спирали (turbo pascal) cL1zMa Помощь студентам 8 16.05.2020 12:00
Помогите найти обратную матрицу в Pascal Maloiii Помощь студентам 3 20.04.2009 21:39
Помогите с задачей на матрицу(pascal) Cyanide Помощь студентам 2 05.04.2009 21:32
задача на матрицу Pascal владимир/к. Помощь студентам 2 09.02.2009 19:09