Показать сообщение отдельно
  #5  
Старый 29.05.2012, 03:21
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Цитата:
Сообщение от YorikBir
записать на место отрицательных элементов нули, а на место положительных - единицы
А если элементом матрицы является НОЛЬ, то что с ним делать? Или такого не бывает?
Цитата:
Сообщение от YorikBir
На форме есть 3 StringGrida
Зачем аж три? В первом у тебя исходная матрица, а во втором преобразованная.

Вот как я увидел решение твоей задачи...
Код:
const
  MatrixSize = 9;

var
  FormGeneral: TFormGeneral;
  OriginalMatrix: array[0..MatrixSize, 0..MatrixSize] of Integer;

implementation

{$R *.dfm}

//заполнение исходной матрицы случайными числами
procedure FillingMatrix;
var
  I, J: Byte;
begin
  for I := 0 to MatrixSize do
    for J := 0 to MatrixSize do
      OriginalMatrix[J, I] := Random(100) - 50;
end;

//преобразование исходной матрицы
//замены отрицательных значений на нули,
//а положительных на единицы
procedure ResultingMatrix;
var
  T, K: Byte;
begin
  for T := 0 to MatrixSize do
    for K := 0 to MatrixSize do
      begin
        if OriginalMatrix[K, T] < 0 then
          OriginalMatrix[K, T] := 0;
        if OriginalMatrix[K, T] > 0 then
          OriginalMatrix[K, T] := 1;
      end;
end;

//вывод исходной заполненой матрицы
procedure TFormGeneral.FormCreate(Sender: TObject);
var
  c, r: Byte;
begin
  FillingMatrix;
  for r := 0 to MatrixSize do
    for c := 0 to MatrixSize do
      SGOriginalMatrix.Cells[c, r] := IntToStr(OriginalMatrix[c, r]);
end;


//вывод преобразованной матрицы
procedure TFormGeneral.BtnResultMClick(Sender: TObject);
var
  cl, rw: Byte;
begin
  ResultingMatrix;
  for rw := 0 to MatrixSize do
    for cl := 0 to MatrixSize do
      SGResultMatrix.Cells[cl ,rw] := IntToStr(OriginalMatrix[cl, rw]);
end;

end.
...вся работа непосредственно с массивами, а в StringGrid только вывод результатов.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием