Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

заполнить массив


RiP ©   (2005-11-12 10:58:00) 

а как мне заполнить числами массив я делаю
procedure SortPuz (var Arr : array of Integer; n : Integer);
var
i : Integer;
Temp : Integer;
Flag : Boolean;
begin

n:=10;
for i:=0 to n do
arr[i]:=random(100);

repeat
  Flag := False;
  for i := 0 to n - 1 do
    if Arr [i] > Arr [i + 1] then begin
      Temp := Arr [i];
      Arr [i] := Arr [i + 1];
      Arr [i + 1] := Temp;
      Flag := True;
    end;
until Flag = False;
end;
а он не пашет


Virgo_Style   (2005-11-12 15:35:00) [1]

При таком (еще раз бр-р) методе у тебя наверняка возникнут еще два вопроса -
Как сделать паузу - ответ Sleep()
и
Почему не перерисовался Edit - ответ Application.ProcessMessages;, а уже после него Sleep();

Вообще-то так не делают, конечно.


Virgo_Style   (2005-11-12 15:32:00) [2]

Сдается мне, что твой SortPuz не является методом формы... так что если уж хочешь делать именно так (бр-р), то либо передавай свой Edit параметром в процедуру, либо обращайся к нему так: Form1.Edit1


RiP   (2005-11-12 13:48:00) [3]

for i:=0 to n do
       arr[i]:=random(100);
я здесь писал но он говорит типа Edit1 не объявлен


Tonich   (2005-11-12 13:36:00) [4]

вот тут ты его заполняешь
 for i:=0 to n do
        arr[i]:=random(100);

следовательно там и показывай ))

но как тебе уже посоветовали сделай 2 процедуры, так действительно логичнее будит


RiP   (2005-11-12 13:23:00) [5]

сортировка пашет только где мне тут вставить процедуру на показ неотсорт массива
const n=10;
var
 Form1: TForm1;
  arr:array [0..10]of integer;
  i:integer;
implementation

{$R *.dfm}
procedure SortPuz (var Arr : array of Integer; n : Integer);
 var
   i : Integer;
   Temp : Integer;
   Flag : Boolean;
     begin
       randomize;
       for i:=0 to n do
         arr[i]:=random(100);
repeat
 Flag := False;
  for i := 0 to n - 1 do
     if Arr [i] > Arr [i + 1] then begin
       Temp := Arr [i];
       Arr [i] := Arr [i + 1];
       Arr [i + 1] := Temp;
       Flag := True;
   end;
until Flag = False;
end;

procedure TForm1.Button1Click(Sender: TObject);
 begin
 edit2.text:='';
  SortPuz(arr,n);
  for i:=0 to n do
    edit2.Text:=edit2.Text+' '+inttostr (arr[i]);
  end;
end.


Virgo_Style   (2005-11-12 13:17:00) [6]

RiP   (12.11.05 13:12) [4]
логично будет написать две процедуры,

procedure FillArray(var Arr:array of integer);
вызывать в OnClick на "заполнить массив"

и

procedure SortArray(var Arr:array of integer);
вызывать в OnClick на "сортировать массив"


Virgo_Style   (2005-11-12 13:14:00) [7]

RiP   (12.11.05 10:58)

телепатов мало. ОЧЕНЬ мало.

где объявление массива, как вызывается процедура, какое сообщение об ошибке - нам самим придумать?


RiP   (2005-11-12 13:12:00) [8]

Большое спасибо, все работает!!!
вот только последнее у меня показывает отсортированный массив
а как мне увидеть Random куда вставить
edit1.Text:=edit1.Text+' '+inttostr (arr[i]);


Tonich   (2005-11-12 12:53:00) [9]

ну блин ты ж пишешь процедуру в которую по ссылке передается массив!!
конечно его надо объявить (что ж ты туда будешь передавать),  мало того еще и задать длину...


RiP   (2005-11-12 12:45:00) [10]

ошибку выдает
но он ведь объявлен в формальных параметрах или его надо еще объявлять?


Tonich   (2005-11-12 11:05:00) [11]

а что значить
> а он не пашет

, он же что-то должен говорить ??
а ты его вообще хоть создаешь предварительно  ?


SetLength(...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо