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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2014, 19:50   #1
Джек12
Пользователь
 
Регистрация: 07.09.2014
Сообщений: 18
По умолчанию таблица StringGrid

Помогите пожалуйста,нужно решить задачу..
Определить наименьший элемент каждой четной строки матрицы A [M,N] в таблице String Grid
Джек12 вне форума Ответить с цитированием
Старый 05.10.2014, 20:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i,j,min,imin,k:integer;
begin
  with StringGrid1 do begin
   //Задаем красивый вид гриду
   Align:=alClient;
   FixedCols:=0;
   FixedRows:=0;
   DefaultColWidth:=Width div ColCount;
   DefaultRowHeight:=Height div RowCount;
   // матрицей 5х5 (к примеру)
   RowCount:=5; ColCount:=5;
   //Наполняем грид цифрами
   for i:=0 to RowCount-1 do begin
    imin:=0;
    for j:=0 to ColCount-1 do begin
     Objects[j,i]:=nil;
     //Случайными числами к примеру
     k:=Random(100);
     if (j=0) or (k<min) then begin
       //Выясняем попутно минимальное и его координаты
       min:=k; imin:=j;
     end;
     //И вписываем в ячейку цифры
     Cells[j,i]:=IntToStr(k);
    end;
    //После ставим метку на ячеку с минимальным
    Objects[imin,i]:=TObject(1);
   end;
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
  //А когда грид отобрадается
  with TStringGrid(Sender) do begin
   //Оределяем, еслть ли на ячейке метка минимального
   if integer(Objects[aCol,aRow])<>0 then begin
     //И если есть заливаем ее краской
     Canvas.Brush.Color:=clRed;
     Canvas.FillRect(aRect);
     Canvas.TextOut(aRect.Left,aRect.Top,Cells[aCol,aRow]);
   end;
  end;
end;

end.
Без матрицы.
P.S. Только не копипасти. Не поможет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2014, 20:19   #3
Джек12
Пользователь
 
Регистрация: 07.09.2014
Сообщений: 18
По умолчанию

что то не работает,выдает ошибку..

еще я нашла вот эту задачу,она правильная?..
у меня она запускается... но не работает..
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer;
begin
stringgrid1.RowCount:=strtoint(edit1.Text);
stringgrid1.ColCount:=strtoint(edit2.Text);
randomize;
for i:=0 to stringgrid1.RowCount do
for j:=0 to stringgrid1.ColCount do
stringgrid1.Cells[i,j]:=inttostr(random(20)+5);
for i:=0 to stringgrid1.RowCount-1 do
if (i+1) mod 2=0 then
begin
k:=strtoint(stringgrid1.Cells[0,i]);
for j:=1 to stringgrid1.ColCount-1 do
if strtoint(stringgrid1.Cells[j,i])<k then k:=strtoint(stringgrid1.Cells[j,i]);
memo1.Lines.Add(inttostr(i+1)+':'+inttostr(k));
end;
end;
Изображения
Тип файла: jpg Безымянный.jpg (28.8 Кб, 126 просмотров)

Последний раз редактировалось Stilet; 05.10.2014 в 20:41.
Джек12 вне форума Ответить с цитированием
Старый 05.10.2014, 20:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что то не работает,выдает ошибку..
Ну для кого писал - не копипастить!
Прочитать и разобраться!.
Так и знал что ты не соизволишь подключить события к гриду. Вот как теперь обьяснить что нужно а инспекторе обьектов задать события создания формы и рисования грида и в них вписать представленный код?
Цитата:
еще я нашла вот эту задачу,она правильная?..
Джек? Странно... Джекки тогда уж.
Впрочем не важно. Теоретически правильная. Практически... Практически - фу-у-у.
Потому что вычисления идут в гриде, а не в массиве.
Опять таки не работает она у тебя потому что ты события не организовал(а) скорее всего для кнопки и не вставил(а) этот код туда.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2014, 21:04   #5
Джек12
Пользователь
 
Регистрация: 07.09.2014
Сообщений: 18
По умолчанию

спасибо) теперь я разобрался в вашей задачи,теперь все работает))
А можно ее как то преобразовать так,чтоб матрица заполнялась случайными числами,нажатием на кнопку и наименьший элемент выводился бы в например Memo..или еще куда нибудь.
Джек12 вне форума Ответить с цитированием
Старый 05.10.2014, 21:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Конечно можно )
Пример ты сам нашел(а).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таблица StringGrid Джек12 Общие вопросы Delphi 6 14.09.2014 19:24
Таблица Stringgrid Nightway Общие вопросы Delphi 11 15.05.2014 18:20
Дана таблица StringGrid rostik123 C++ Builder 4 30.09.2012 19:31
Таблица StringGrid hacker-allv Общие вопросы Delphi 1 26.03.2012 21:43
таблица stringgrid Hilda Помощь студентам 6 06.05.2010 21:37