Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.05.2012, 19:49
YorikBir YorikBir вне форума
Прохожий
 
Регистрация: 19.05.2012
Сообщения: 4
Репутация: 10
По умолчанию Вывод матрицы в SrringGrid

Задача:
В заданной матрице С записать на место отрицательных элементов нули, а на место положительных - единицы. Исходную и полученную матрицы вывести в общепринятом виде.

На форме есть 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  
Старый 27.05.2012, 10:17
Аватар для DelphiM0ZG
DelphiM0ZG DelphiM0ZG вне форума
Новичок
 
Регистрация: 22.10.2011
Сообщения: 62
Репутация: 666
По умолчанию

Матрица X в этой процедуре не инициализирована. Насколько я понял, Вы по ней определяете 0 или 1 поставить. Если я правильно понял, то она должна получать значения из какого-то StringGrid'а, для этого просто забивайте в неё значения во вложенном цикле, который в конструкции With.
__________________
Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!..
Ответить с цитированием
  #3  
Старый 28.05.2012, 11:28
YorikBir YorikBir вне форума
Прохожий
 
Регистрация: 19.05.2012
Сообщения: 4
Репутация: 10
По умолчанию

А поподробнее как это написать?
Ответить с цитированием
  #4  
Старый 28.05.2012, 21:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Во первых, ваш код проверки матрицы не соответствует условию задачи.
Во вторых, вы работаете с матрицей, а собственно вывода этой матрицы в грид я не вижу в вашем коде нигде. И вообще вы такой куций код привели, что понять где вы еще наврали у меня не получается.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 28.05.2012 в 21:07.
Ответить с цитированием
  #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 только вывод результатов.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
Этот пользователь сказал Спасибо Kailon за это полезное сообщение:
YorikBir (29.05.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025