mmotop20oo12
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте люди, помогите устранить ошибку в коде. Делаю рандом без повторений: заполняю массив по порядку идущими числами, рандомлю элемент этого массива и записываю во 2ой массив на 1ое, 2 ... N ое место, но бывает что создаются (я встречал только 2 элемента) 2 повторных элемента, не могу заметить ошибку помогите пожалуйста. Я передавал в процедуру 25, 10: CreateRandomWithoutReps(25, 10) Код: var imas1, imas2 : array [1..100] of integer; procedure CreateRandomWithoutReps (HowMuchQuestions, HowMuchQuestionsMustBeAsked : integer); var i, j, k, q, s : integer; begin randomize; for i := 1 to HowMuchQuestions do imas1[i] := i; i := HowMuchQuestionsMustBeAsked; j := 1; s := HowMuchQuestions; while i <> 0 do begin q := random(s) + 1; imas2[j] := imas1[q]; for k := q to i do imas1[k] := imas1[k+1]; {тут я смещаю массив последовательно идущих чисел} dec(i); dec(s); inc(j); end; end; |
| Всего записей: 327 | Зарегистр. 10-06-2014 | Отправлено: 20:41 03-05-2015 | Исправлено: mmotop20oo12, 20:43 03-05-2015 |
|