![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопросы новичка про цикл и неповторяющиеся числа в массиве.
volkafff © (2011-01-15 17:07:00)Здравствуйте!
1)Я могу написать во так:
z=array[1..10]of integer;
for i:=1 to 10 do
begin
z[i]:=5;
end;
То есть я циклом присваиваю всем элементам массива значение "5".
А как мне сделать что-то подобное:
For i:=1 to 10 do
begin
image[i].visible:=false;
end;
То есть я хочу присвоить 10-ти объектам одно и тоже значение одного и того же свойства.Не получается. Пробовал и круглые,и квадратные скобки- всё равно.Что сделать?
2) Мне нужно,чтобы в массиве были сгенерированные неповторяющиеся числа(порядок карт в колоде).
Хотел сделать так:
X=array[1..10]of integer;(все числа этого массива равны нулю)
number=array[1..10]of integer; (здесь будут храниться сгенерированные числа)
(L-это label)
for i:=1 to 10 do
begin
L:
Z:=random(9)+1;(генерация числа от 1 до 10(для этого генерируется число от 0 до 9 и прибавляется единица))
if x[z]=0 then (в массиве Х только нули.Как только сгенерируется число,скажем,5,то x[5]:=1; сделано для отслеживания повторяющихся чисел)
begin
number[i]:=z;(если небыло раньше такого числа-присвоить его другому массиву под индексом [i])
x[z]:=1;
end
else
goto L(в противном случае повторить генерацию)
end;
Вся проблема способа в том,что двухъядерный компьютер завис на генерации пяти чисел, а я хотел сгенерировать 92 числа. Что мне можно сделать?
volkafff (2011-01-15 18:37:00) [41]v_a_belousov
Спасибо! А можно чуть-чуть поподробнее про то,что здесь творится+ответ на первый вопрос?
v_a_belousov (2011-01-15 18:28:00) [42]var i: integer; List: TStringList;
begin
repeat
Randomize;
i := random(92);
if i<>0 then
begin
if List.IndexOf(IntToStr(i))=-1 then
List.Add(IntToStr(i));
end;
Application.ProcessMessages;
until List.Count+1=92;
end;
volkafff (2011-01-15 18:08:00) [43]Я не то чтобы не очень понял, я ВООБЩЕ ничего не понял.Можно кодом?(желательно всё) и.если возможно, без стандартных компонентов delphi.
Сергей М. (2011-01-15 18:00:00) [44]загони ряд в список, например, в TList
пятью циклами выбираешь из списка элемент со случ.индексом в диапазоне от 0 до тек.размера списка и тут же удаляешь выбранный элемент из списка, уменьшая тем самым его размер на 1
volkafff (2011-01-15 17:31:00) [45]Вот есть ряд чисел:
1 2 3 4 5
мне нужен он же,но в другой последовательности:
3 1 5 2 4
или
5 1 4 3 2
и т.д.
Как это можно сделать?
Сергей М. (2011-01-15 17:28:00) [46]
> двухъядерный компьютер завис на генерации пяти чисел, а
> я хотел сгенерировать 92 числа
92 дели на 5, умножь на 2 и прибавь к результату еще процентов 30-40 "про запас" - получишь число ядер, способных решить твою астронимически сложную задачу