Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];

Вниз

Массив   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1214237843
cr@nk
2008-06-23 20:17
2008.07.27
Помогите с условием входения в заштрих. область


6-1190830245
HaJik
2007-09-26 22:10
2008.07.27
ping? D7 enterprize


15-1213185737
Ega23
2008-06-11 16:02
2008.07.27
Своё cmd-окошко


2-1214822127
Igor23
2008-06-30 14:35
2008.07.27
Работа с IdHTTP


2-1214278389
АндрейК
2008-06-24 07:33
2008.07.27
работа с ecxel: ошибка Lock file has grown too large





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский