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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 20:27   #1
dex92
 
Регистрация: 10.05.2010
Сообщений: 5
По умолчанию Образовать третий массив (stringgrid)

Приветствую всех... Прошу помощи в решении задачи.

Условие: Образовать третий массив из элементов, встречающихся в обоих массивах.

Программа работает, но не так как нужно: одновременно выводит в label2 надпись и в stringrid3 выводит массив не правильно (откуда-то берутся 5-значные цыфры ).

Не могу понять как исправить...

По задумке, элементы массива вводятся вручную:


Результат:


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,l,c:integer;
a:array[1..5] of integer;
b:array[1..5] of integer;
ab:array[1..5] of integer;

begin

FOR i := 1 TO 5 do
begin
if length(stringgrid1.cells[i-1,0]) <> 0
then
a[i]:= strtoint(stringgrid1.Cells[i-1,0])
else a[i]:=0
end;

FOR i := 1 TO 5 do
begin
if length(stringgrid2.cells[i-1,0]) <> 0
then
b[i]:= strtoint(stringgrid2.Cells[i-1,0])
else b[i]:=0
end;

FOR i := 1 TO 5 do
FOR l := 1 TO 5 do
 IF a[i] = b[l] THEN
 begin
 C:=0;
 c := c + 1;
 ab[c] := a[l];
end
 else
 begin
label2.caption:='Массив образован из одинаковых элементов';
 end;
FOR i := 1 TO 5 do

 stringgrid3.Cells[i-1,0]:= inttostr(ab[i]);
end;

end.

Последний раз редактировалось dex92; 17.05.2010 в 20:32.
dex92 вне форума Ответить с цитированием
Старый 17.05.2010, 21:00   #2
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Код:
var m,i,j,k:integer;
begin
m:=-1;
for i:=0 to sg1.colcount -1 do
for j:=0 to sg2.colcount -1 do
if  sg1.cells[i,0]=sg2.cells[j,0] then
begin
f:=false;
for k:=0 to m do
 if sg3.cells[k,0]= sg1.cells[i,0] then begin f:=true;break;end;
if not f  then begin m:=m+1; sg3.colcount:=m+1; sg3.cells[m,0]:=sg1.cells[i,0];end;
end;
end;
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!

Последний раз редактировалось DoDge_VipeR; 17.05.2010 в 21:03.
DoDge_VipeR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stringgrid как двумерный массив Gypsy Общие вопросы Delphi 3 20.01.2010 10:09
VLOOKUP - второй, третий результат? jungo Microsoft Office Excel 2 23.11.2009 13:42
Коипрование из буфера в Stringgrid массив строк San4o Компоненты Delphi 1 13.09.2009 22:37
Соединить два списка в третий Иванов_ДМ Microsoft Office Excel 11 20.08.2009 08:21