|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2017, 11:14 | #1 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 155
|
иногда зависает кусок кода который генерирует случайные числа без повторений
Вот кусок кода который генерить случайные числа без повторений:
Код:
Попробовал написать без использования меток все равно зависает, значит метки здесь не при чем, а также проверил убрав код до цикла, значит предустановки массива тоже не при чем. Проблема именно в теле цикла. Возможно какая то ошибка самого компилятора. Попробовал прогонять программу через F7, это отладка и всегда при отладке возникает ошибка: Проект вызвал класс исключения 'External:SIGSEV'. В файле 'include\application.inc ' на строке 249 Ну и строка в этом файле: function TApplication.GetExename: String; Begin Result := ParamStrUTF8(0); end; иде Lazarus |
13.08.2017, 11:29 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Random(9) генерит 0..8 - всего 9 цифр.
А размер массива по максимуму может быть 10 |
13.08.2017, 11:32 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
setlength(digitarray,n-1); // элемненов в массиве n-1
for i := 0 to n-1 do //чегойто цикл за пределы массива?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.08.2017, 11:34 | #4 | |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 155
|
Цитата:
Спасибо. Не внимательность!!!. Последний раз редактировалось goto ∞; 13.08.2017 в 11:44. |
|
13.08.2017, 11:40 | #5 | |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 155
|
Цитата:
например n = 4 + random(7) = 4 + 2 = 6 - шесть элементов Первый элемент имеет индекс 0 ... Шестой элемент имеет индекс 5 |
|
13.08.2017, 11:47 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
for i := 0 to n-1 - для n элементов, а у тебя в массиве n-1 элементов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.08.2017, 11:57 | #7 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 155
|
|
13.08.2017, 13:18 | #8 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
Я не понял Вы исправили ошибку или нет? Просто я тут подумал, что у Вас ошибка может быть вот здесь:
- если i = 0(приходит из вышестоящего цикла), то получается что k идет от 0 до какого-то большого числа - максимальное значение i, зависит от типа i.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
13.08.2017, 13:47 | #9 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
|
13.08.2017, 13:53 | #10 | |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 155
|
Цитата:
А бесконечный цикл возникал не всегда а только когда переменная n (n := 4 + random(7) ) равнялась 10, и в этот десять элементный массив пыталась занести 9 элементов без повторений что в принципе невозможно, отсюда и бесконечный цикл. И вторая ошибка но не критичная в данном случае выход за пределы массива, но она всплыла все равно где нибудь А то что i = 0 Это сам алгоритм, заносим в массив первый элемент, потом второй и только потом начинается проверка вторго элемента с первым что бы они не были одинаковыми по условию задачи, тут все норм. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Датчик случайных чисел генерирует числа от 0 до 255. Нужно перевести числа в их символьное представление. Остановка программы - любая клавиша. | julu199 | Помощь студентам | 2 | 19.09.2016 12:24 |
Датчик случайных чисел генерирует числа от 0 до 255. Нужно перевести числа в их символьное представление. Остановка программы – появление символа «*». Сколько символов было напеч | julu199 | Помощь студентам | 1 | 19.09.2016 12:20 |
есть код который генерирует md5. Но не пойму как его вызывать | pompiduskus | Общие вопросы C/C++ | 30 | 18.08.2014 00:03 |
Записать в файле g все числа файлов c и d без повторений и в порядке возрастания | imeugene | Помощь студентам | 0 | 23.05.2013 16:30 |
Delphi. random, случайные числа без повторений | MerCY | Помощь студентам | 8 | 10.05.2010 15:19 |