Текущий архив: 2008.07.27;
Скачать: CL | DM;
ВнизМассив Найти похожие ветки
← →
Romashka © (2008-06-26 17:04) [0]Дан массив размера N (N — четное число). Поменять местами первую и вторую половины массива. Вывод элементов массива в компонент StringGrid оформить в виде подпрограммы, которая имеет параметр-константу – открытый массив. Количество столбцов компонента StringGrid устанавливается в зависимости от размеров переданного
массива. Вот что у меня вышло(но оно не работает)procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var a: array[0..n]of integer; X:integer;
begin
For i:= 0 to n div 2 do
// for j:= n div 2+1 to length (a)-1 do
X:=a[i];
a[i]:=a[n div 2 +i];
a[n div 2 +i]:=a[i];
begin
for I := 0 to n do
begin
StringGrid2.cells[i,0]:=inttostr(a[i]);
end;
end;
end;
end.
← →
Поросенок Винни-Пух © (2008-06-26 17:10) [1]Один гетмем и два мува.
← →
han_malign © (2008-06-26 17:58) [2]вообще то на лекции ходить надо
..................
var a: array[0..n-1]of integer;
..................
customN:= <скажем RXSpinEdit1>.AsInteger;
if( customN > Length(a) )then customN:= Length(a);
half:= customN div 2;
offs:= half + customN and 1;//на случай таки нечетного
for i:= Low(a) to Low(a) + half - 1 do begin
x:= a[i]; a[i]:=a[i+offs]; a[i+offs]:= x;
end;
UpdateGrid(Slice(a, customN));
..................
procedure TForm1.UpdateGrid(const aa: array of integer);
var i: integer;
begin
StringGrid2.RowCount:= Length(aa) + StringGrid2.FixedRows;
for i:= 0 to Length(aa) - 1 do StringGrid2.Cells[StringGrid2.FixedCols, StringGrid2.FixedRows + i]:= inttostr(aa[i]);
end;
← →
zorik © (2008-06-26 18:07) [3]type
TIntArray = array of integer
...
procedure TForm1.UpdateGrid(const aa: TIntArray);
...
← →
JN (2008-06-26 18:09) [4]Можно так. Код не совсем оптимальный, но для универа думаю пойдет.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
N = 10;
var
half, i: Integer;
S1, S2, S3: TStringList;
M: array [1..N] of Integer;
begin
Randomize;
for i := 1 to N do
begin
M[i] := Random(5);
ListBox1.Items.Add(IntToStr(M[i]));
end;
S1 := TStringList.Create;
try
for i := 1 to N div 2 do
S1.Add(IntToStr(M[i]));
S2 := TStringList.Create;
try
for i := (N div 2 + 1) to N do
S2.Add(IntToStr(M[i]));
S3 := TStringList.Create;
try
for i := 0 to S2.Count - 1 do
S3.Add(S2[i]);
for i := 0 to S1.Count - 1 do
S3.Add(S1[i]);
StringGrid1.RowCount := 1;
StringGrid1.ColCount := N;
for i := 0 to S3.Count - 1 do
StringGrid1.Cells[i, 0] := S3[i];
finally
S3.Free;
end;
finally
S2.Free;
end
finally
S1.Free;
end;
end;
end.
← →
Галинка (2008-06-26 18:56) [5]надо не только на лекции ходить, но и задание читать:
Вывод элементов массива в компонент StringGrid оформить в виде подпрограммы, которая имеет параметр-константу – открытый массив. Количество столбцов компонента StringGrid устанавливается в зависимости от размеров переданного
массива.
т.е. имеем в простейшем случае глобальный массив:
arGlobal : array of integer;
дальше имеем минимум четыре процедуры, как то:
procedure GenArray()
var
i: integer;
begin
{тут генерируем каким то способом массив
например так:
for i:=0 to 25 do
begin
SetLength(arGlobal, i+1);
arGlobal[i] := i;
end;
}
end;
procedure ShowArray(sg : TStringGrid; arToShow : array of integer)
var
i: integer;
begin
sg.ColCount := High(arToShow)+1;
for i := Low(arToShow) to High(arToShow) do
sg.Cell[0, i] := IntToStr(arToShow[i]);
end;
procedure SwapArray(arToSwap : array of integer)
var
i, middle: integer;
begin
middle := High(arToSwap) div 2;
for i := Low(arToSwap) to middle do
swap(arToSwap[i], arToSwap[i+(midle + 1)]);
end;
procedure swap(val1, val2 : integer)
var
iSw: integer;
begin
iSw := val1;
val1 := val2;
val2 := iSw;
end;
А вот по нажатию на кнопку (или в других событиях) уже можно использовать эти процедуры.
← →
Галинка (2008-06-26 19:00) [6]точнее массив можно объявить и в обработчике события. И передавать во все остальные функции с модификатором const.
← →
Игорь Шевченко © (2008-06-26 20:57) [7]Галинка (26.06.08 18:56) [5]
можно ЕГЭ сдавать
Страницы: 1 вся ветка
Текущий архив: 2008.07.27;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.006 c