Подскажите как решить задачу.
Сформируйте массив из элементов исходных массивов, больших второго элемента первого массива и положительных элементов второго массива.
Следует учесть, что исходные массивы могут быть разной длины.
Части задачи я сочтавила и они у меня работают. Я не понимаю, как можно сформировать третий массив, и числа второго массива поставить после чисел первого.
Первая часть.
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..20] of integer;
n,i,c:integer; //n - кол-во элем-ов первого массива
begin
n:=StrToInt(Edit1.Text);
for i:=1 to n do
a:=StrToInt(StringGrid1.Cells[i-1,0]);
c:=0;
for i:=1 to n do
begin
if a>a[2] then
begin
inc(c);
StringGrid3.Cells[c-1,0]:=IntToStr(a);
end;
Edit3.Text:=IntToStr(c);
end;
end.
Вторая часть.
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..20] of integer;
n,i,k:integer;
begin
n:=StrToInt(Edit1.Text);
for i:=1 to n do
a:=StrToInt(StringGrid1.Cells[i-1,0]);
k:=0;
for i:=1 to n do
begin
if a>=0 then
begin
inc(k);
StringGrid2.Cells[k-1,0]:=IntToStr(a);
end;
Edit2.Text:=IntToStr(k);
end;
end;
Формирование массива из элементов исходного массива
Если весь отбор от первого и второго массива запихать в третий, вы сами то путаться не будете ?
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Задача поставлена и запихать надо. Буду думать.
BHy4ok писал(а):Если весь отбор от первого и второго массива запихать в третий, вы сами то путаться не будете ?
в третьем гриде: 1-я строка - условие первого массива, 2-я второго.
Исходники:
http://rapidshare.com/files/305873787/tttt.zip.html
[syntax='Delphi']
procedure rand; // Заполнение массива случайными числами
var
i,j:integer;
begin
Randomize;
for I := 0 to Form1.StringGrid1.ColCount-1 do
begin
Form1.StringGrid1.Cells[i,0]:=IntToStr(random(70)-20);
Form1.StringGrid2.Cells[i,0]:=IntToStr(random(70)-20);
end;
end;
procedure maxx; // Поиск максимального числа ячеек между первым и вторым гридом.
begin
if Form1.Edit1.Text<Form1.Edit2.Text then
max:=StrToInt(Form1.Edit2.Text)
else
max:=StrToInt(Form1.Edit1.Text);
Form1.StringGrid3.ColCount:=max;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,m,n:integer;
begin
rand;
maxx;
j:=0;
n:=0;
For i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols.Clear;
for I := 0 to StringGrid1.ColCount-1 do
begin
if StrToInt(StringGrid1.Cells[i,0])>StrToInt(StringGrid1.Cells[1,0]) then
begin
StringGrid3.Cells[j,0]:=StringGrid1.Cells[i,0];
inc(j);
end;
end;
for m := 0 to StringGrid2.ColCount-1 do
begin
if StrToInt(StringGrid2.Cells[m,0])>0 then
begin
StringGrid3.Cells[n,1]:=StringGrid2.Cells[m,0];
inc(n);
end;
end;
end;
[/syntax]
Исходники:
http://rapidshare.com/files/305873787/tttt.zip.html
[syntax='Delphi']
procedure rand; // Заполнение массива случайными числами
var
i,j:integer;
begin
Randomize;
for I := 0 to Form1.StringGrid1.ColCount-1 do
begin
Form1.StringGrid1.Cells[i,0]:=IntToStr(random(70)-20);
Form1.StringGrid2.Cells[i,0]:=IntToStr(random(70)-20);
end;
end;
procedure maxx; // Поиск максимального числа ячеек между первым и вторым гридом.
begin
if Form1.Edit1.Text<Form1.Edit2.Text then
max:=StrToInt(Form1.Edit2.Text)
else
max:=StrToInt(Form1.Edit1.Text);
Form1.StringGrid3.ColCount:=max;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,m,n:integer;
begin
rand;
maxx;
j:=0;
n:=0;
For i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols.Clear;
for I := 0 to StringGrid1.ColCount-1 do
begin
if StrToInt(StringGrid1.Cells[i,0])>StrToInt(StringGrid1.Cells[1,0]) then
begin
StringGrid3.Cells[j,0]:=StringGrid1.Cells[i,0];
inc(j);
end;
end;
for m := 0 to StringGrid2.ColCount-1 do
begin
if StrToInt(StringGrid2.Cells[m,0])>0 then
begin
StringGrid3.Cells[n,1]:=StringGrid2.Cells[m,0];
inc(n);
end;
end;
end;
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Интересное решение.
Спасибо большое. Честно говоря, я еще такие приемы не применяла.
Позже выложу свое решение.
За ответ еще раз - ОГРОМНОЕ СПАСИБО.
Спасибо большое. Честно говоря, я еще такие приемы не применяла.
Позже выложу свое решение.
За ответ еще раз - ОГРОМНОЕ СПАСИБО.
Спасибо большое всем, кто мне помогал. Моя версия решения задачи.
[syntax="Delphi"]
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..20] of integer;
b:array[1..20] of integer;
n,k,i,c,d:integer; //n,k - êîë-âî ýëåì-îâ ïåðâ. è âòîð. ìàññèâîâ
begin
n:=StrToInt(Edit1.Text);
k:=StrToInt(Edit2.Text);
c:=0;
if n<=0
then
Label7.Visible:=True
else
begin
for i:=1 to n do
a:=StrToInt(StringGrid1.Cells[i-1,0]);
for i:=1 to n do
if a>a[2]
then
begin
inc(c);
StringGrid3.Cells[c-1,0]:=IntToStr(a);
end;
if k<=0
then
Label6.Visible:=True
else
begin
for i:=1 to k do
b:=StrToInt(StringGrid2.Cells[i-1,0]);
for i:=1 to k do
if b>0
then
begin
inc(d);
inc(c);
StringGrid3.Cells[c-1,0]:=IntToStr(b);
end;
Edit3.Text:=IntToStr(c);
if d=0
then
label8.Visible:=True
end;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
Edit2.Text:='';
Edit3.Text:='';
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
for i:=0 to StringGrid1.ColCount-1 do
StringGrid1.Cols.Clear();
for i:=0 to StringGrid2.ColCount-1 do
StringGrid2.Cols.Clear();
for i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols.Clear();
end;
procedure TForm1.Edit2Change(Sender: TObject);
var
i:integer;
begin
Edit3.Text:='';
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
for i:=0 to StringGrid2.ColCount-1 do
StringGrid2.Cols.Clear();
for i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols[i].Clear();
end;
end.[/syntax]
[syntax="Delphi"]
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..20] of integer;
b:array[1..20] of integer;
n,k,i,c,d:integer; //n,k - êîë-âî ýëåì-îâ ïåðâ. è âòîð. ìàññèâîâ
begin
n:=StrToInt(Edit1.Text);
k:=StrToInt(Edit2.Text);
c:=0;
if n<=0
then
Label7.Visible:=True
else
begin
for i:=1 to n do
a:=StrToInt(StringGrid1.Cells[i-1,0]);
for i:=1 to n do
if a>a[2]
then
begin
inc(c);
StringGrid3.Cells[c-1,0]:=IntToStr(a);
end;
if k<=0
then
Label6.Visible:=True
else
begin
for i:=1 to k do
b:=StrToInt(StringGrid2.Cells[i-1,0]);
for i:=1 to k do
if b>0
then
begin
inc(d);
inc(c);
StringGrid3.Cells[c-1,0]:=IntToStr(b);
end;
Edit3.Text:=IntToStr(c);
if d=0
then
label8.Visible:=True
end;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
Edit2.Text:='';
Edit3.Text:='';
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
for i:=0 to StringGrid1.ColCount-1 do
StringGrid1.Cols.Clear();
for i:=0 to StringGrid2.ColCount-1 do
StringGrid2.Cols.Clear();
for i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols.Clear();
end;
procedure TForm1.Edit2Change(Sender: TObject);
var
i:integer;
begin
Edit3.Text:='';
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
for i:=0 to StringGrid2.ColCount-1 do
StringGrid2.Cols.Clear();
for i:=0 to StringGrid3.ColCount-1 do
StringGrid3.Cols[i].Clear();
end;
end.[/syntax]