Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.015 c
2-1214283547
AlekseyB
2008-06-24 08:59
2008.07.27
DBGrid


2-1214387040
Муслик
2008-06-25 13:44
2008.07.27
Удаление в таблице


2-1214540511
alex810
2008-06-27 08:21
2008.07.27
Ошибка при подключении


15-1213024558
Slider007
2008-06-09 19:15
2008.07.27
С днем рождения ! 9 июня 2008 понедельник


15-1212910125
Kostafey
2008-06-08 11:28
2008.07.27
С днем рождения ! 8 июня