Главная страница
    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.47 MB
Время: 0.006 c
2-1214302154
Кирей
2008-06-24 14:09
2008.07.27
Ошибка в запросе


2-1214387731
Aggressor
2008-06-25 13:55
2008.07.27
WinXP rus, WinXP eng и кириллица


15-1212779576
DillerXX
2008-06-06 23:12
2008.07.27
Хорошая капча


15-1211663863
Германн
2008-05-25 01:17
2008.07.27
Насколько же я могу быть тупым!


2-1214217352
tey
2008-06-23 14:35
2008.07.27
текст в непонятой кодировке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский