Другие языки программирования и технологии

Вопрос по delphi, помогите пожалуйста.

Я пытаюсь сделать следующее: Надо чтобы при нажатии на кнопку, рандомно показывался текст который находится в массиве, но мне нужно также сделать проверку, что если в панели 1 текст например 'Понедельник', то в панели 2 рандомно может выходить только текст который я собственно укажу после проверки, вообщем что-то типо этого, но правильно)): var k: array[1..6] of string; begin k[1]:='lol1'; k[2]:='lol2'; k[3]:='lol3'; k[4]:='lol4'; k[5]:='lol5'; k[6]:='lol6'; if Panel1.Caption='Понедельник' then randomize Panel2.Caption:=Здесь мне надо сделать так, чтобы в панели 2 выводился рандомно только k[1] и k[3]; end; Помогите пожалуйста. Я уже писал этот вопрос, но вместо lol1 , lol2 и т.д. я написал цифры, а те кто отвечал подумали что мне нужно выводить в panel2 цифры и написали код, который мне не нужен) Вообщем помогите пожалуйста)
Тут у тебя подход немного не такой. если при разных значениях Panel1 нужно выбирать различные наборы основанные на массиве К, для начала надо указать массив (допустим это будет M) допустимых элементов массива К для вывода соответствующим надписям Panel1, затем в зависимости от значения выбираешь в массиве M перечень допустимых позиций в массиве К. Допустим в этом перечне находится 4 значений 1,2 4,5, потом генерируешь число random(4)+1 которое даст тебе выбрать один из этих элементов и таким образом ты знаешь номер элемента из массива К который тебе надо выбрать. подставляешь в качестве индекса массива и получаешь результат.. .

Что-то вроде

var M : array[1..2,1..2] of integer;
v, s, x : integer;

begin
randomize;

M[1,1] = 1; M[1,2] = 3;
M[2,1] = 2; M[2,2] = 5;

if Panel1.Caption='Понедельник' then v := 1;
if Panel1.Caption='Вторник' then v := 2;

s := random(2) + 1; // Здесь у нас случайное число от 1 до 2
x := M[v,s]

Panel2.Caption:= K[x];

end;

для ПОНЕДЕЛЬНИКА у нас будет выводится либо K[1] либо K[3]
для ВТОРНИКА - K[2] либо K[5]

Если количество элементов для каждого дня будет разным, то надо ввести еще одну размерность т. е. объявить M[1..2, 0..n] и M[v,0] должен содержать количество элементов. при этом n - максимальное количество элементов для каждого дня.. .
Тогда и s := random(M[v,0])+1

п. с. можно конечно записать все вычисления в одну строку, но когда пишешь так - понятней разбираться как ОНО работает.
ИР
Иван Руденко
4 722
Лучший ответ
Panel2.Caption := k[random(1)*2+1];