Цитата:
Сообщение от 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 только вывод результатов.