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

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

Вопросы новичка про цикл и неповторяющиеся числа в массиве.


Страницы:   1 2 3

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 "про запас" - получишь число ядер, способных решить твою астронимически сложную задачу


Страницы:   1 2 3

Наверх

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