Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

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

 
Rim   (2004-03-11 21:48) [0]

Помогите пожалуйста,как сделать что бы цыфры в StringGrid1 не повторялись.
procedure TForm1.Button1Click(Sender: TObject);
      var
      a: array [1..7] of integer; //наш массив
         i: integer; //индексная переменная
         begin         //случайно задаем массив
     randomize;   //инициализируем генератор случайных чисел
            for i:=low(a) to high(a) do
                              //от нижнего к верхнему
           begin
            a[i]:=random(10);
                    //берем случайное в пределах 10
       StringGrid1.Cells[i-1,0]:=IntToStr(a[i]);
//кидаем строчку полученную из целого числа в соответствующую ячейку СтрингГрида1
            end; //все
         end;


 
ssk   (2004-03-11 22:15) [1]

держи :-)

procedure TForm1.Button1Click(Sender: TObject);
var
 a: array [1..7] of integer; //наш массив
 i: integer; //индексная переменная
begin
 randomize;
 for i:=low(a) to high(a) do
   begin
     //берем случайное в пределах 10
     repeat
       a[i]:=random(10);
     until StringGrid1.Rows[0].IndexOf(IntToStr(a[i]))=-1;
     //кидаем строчку полученную из целого числа в соответствующую ячейку СтрингГрида1
     StringGrid1.Cells[i-1, 0]:=IntToStr(a[i]);
   end; //все
end;


 
Rim   (2004-03-11 22:34) [2]

А нельзя ли наполнить массив случайными не повторяющимися числами ?


 
ssk   (2004-03-11 22:53) [3]

можно. один из вариантов:

procedure TForm1.Button1Click(Sender: TObject);
const
 xMax = 7; // размеры нашего массива
 yMax = 7;
var
 m: array [0..xMax, 0..yMax] of byte;
 c, r, k, q: byte;
begin
 for c:=0 to xMax do
   for r:=0 to yMax do
     m[c, r]:=0; // обнуляем массив (на всякий случай)

 // здесь мы собственно и заполняем массив
 for k:=1 to xMax*yMax do
   repeat
     c:=random(xMax);
     r:=random(yMax);
     if m[c, r]=0 then
       m[c, r]:=k;
   until m[c, r]=k;

 // выводим массив в стринггрид
 StringGrid1.RowCount:=xMax;
 StringGrid1.ColCount:=yMax;
 for c:=0 to xMax do
   for r:=0 to yMax do
     StringGrid1.Cells[c, r]:=IntToStr(m[c, r]);
end;


если кому-то покажется кривовато, то извините... ;-)


 
Rim   (2004-03-11 23:28) [4]

Есть функция заполнения массива случайными неповторяющимися числами:
procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

помогите ее применить в моём примере



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
3-1078135473
Janbolat
2004-03-01 13:04
2004.03.28
Отображение длинных чисел в DBGride


14-1076913252
Красная Майка
2004-02-16 09:34
2004.03.28
Напоминаю о MMP на следующей неделе.


14-1078216065
Kerk
2004-03-02 11:27
2004.03.28
Бойкот выборов


11-1057512455
Ajax
2003-07-06 21:27
2004.03.28
Смена языка интерфейса


1-1078931560
Серёга
2004-03-10 18:12
2004.03.28
Команды