![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Задача:
В заданной матрице С записать на место отрицательных элементов нули, а на место положительных - единицы. Исходную и полученную матрицы вывести в общепринятом виде. На форме есть 3 StringGrida и кнопка, не могу вывести измененную матрицу в 3 StringGrid. Помогите. Код:
procedure TForm1.Button2Click(Sender: TObject);
var
x:array[1..10,1..10] of integer;
begin
with StringGRid1 do
for i:=0 to RowCount do
for j:=0 to ColCount do
StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j];
end;
Begin
for i:=1 to m do
for j:=1 to n do
begin
if x[i,j]<=0 then x[i,j]:=0 else x[i,j]:=1; |
|
#2
|
||||
|
||||
|
Матрица X в этой процедуре не инициализирована. Насколько я понял, Вы по ней определяете 0 или 1 поставить. Если я правильно понял, то она должна получать значения из какого-то StringGrid'а, для этого просто забивайте в неё значения во вложенном цикле, который в конструкции With.
|
|
#3
|
|||
|
|||
|
А поподробнее как это написать?
|
|
#4
|
||||
|
||||
|
Во первых, ваш код проверки матрицы не соответствует условию задачи.
Во вторых, вы работаете с матрицей, а собственно вывода этой матрицы в грид я не вижу в вашем коде нигде. И вообще вы такой куций код привели, что понять где вы еще наврали у меня не получается. Последний раз редактировалось Страдалецъ, 28.05.2012 в 21:07. |
|
#5
|
||||
|
||||
|
Цитата:
Цитата:
Вот как я увидел решение твоей задачи... Код:
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. |
| Этот пользователь сказал Спасибо Kailon за это полезное сообщение: | ||
YorikBir (29.05.2012)
| ||