![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
![]()
Итак. Раз уж я студентка... Хотя прогу и не для зачета пишу, а для друга... Но в общем к делу.
Возникла задачка: Раскидать определенную строку по Caption'ам кнопок в случайном порядке. Что-то я тут написала, и вроде бы правильно должно работать. Но, как водится, результат выходит совсем не такой, каким его ожидаешь))) Вот: Код:
1) в "с" выпадает случайная позиция символа в строке CurWord. По скольку рандом включает 0, то прибавляется 1, дабы не было ошибков с индексами в строке. Также по скольку длина CurWord по идее уменьшается после каждого п. 3, то я вычитаю i из "рандома". 2) b.Caption присваивается этот символ; 3) из CurWord удаляется этот символ. Тут, на сколько я понимаю, CurWord должна стать короче. В результате работы получаются несколько кнопок с пустыми названиями, иногда со странными символами, и т.п. лаги. Где может быть ошибка? |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
А зачем уменьшать строку.
Пусть есть определенная строка. Представьте что это массив символов. Вы просто должны читать элемент массива со случайным индексом. Цитата:
Цитата:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
||
![]() |
![]() |
![]() |
#3 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
![]() |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Тогда Ваша ошибка в следующем - Вы занесли в цикл максимальную длину строку, не учитывая, что она каждый раз становится меньше. Для этого нужно использовать цикл while с условием что длина строки больше нуля.... В частности Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 08.11.2010 в 14:30. |
||
![]() |
![]() |
![]() |
#5 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
![]() |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Не проще ли:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 08.11.2010 в 14:35. |
![]() |
![]() |
![]() |
#7 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
![]()
Хм...) Stilet, мне кажется, или это то же самое, только с downto?)))) Ну сейчас попробую..)
Upd. Ничего не изменилось. В тесте: слово из 8 букв, на форме получилось - 2 кнопки пустые, 6 подписаны. слово из 4 букв, на форме - 1 пустая, 3 подписаны. слово из 11 букв, на форме - 4 пустых, 7 подписаны. Последний раз редактировалось Риндера; 08.11.2010 в 14:44. |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Риндера
в коде от Stilet я не вижу косяков. Ан нет, вижу! строки от единицы нумеруются, а random от нуля возвращает!! Скажите, а Вы можете код дать целиком? думаю, что на 99% проблема в том, как Вы получаете i-ю кнопку (я выделил): Цитата:
Последний раз редактировалось Serge_Bliznykov; 08.11.2010 в 15:17. |
|
![]() |
![]() |
![]() |
#9 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
![]()
Serge_Bliznykov, спасибо за замечание про нолик в рандоме!
Не знаю каким чудом, но с Код:
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Точно? А может лучше:
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск в файле string'а | Aries | Помощь студентам | 1 | 21.10.2010 20:33 |
Вопрос по кнопкам... | Han_Nik | Помощь студентам | 4 | 19.05.2010 20:41 |
таблица транспартировка раскидывание по листам макрос | marc-nikita | Microsoft Office Excel | 6 | 12.11.2009 18:15 |
посимвольное считывание | DeFace | Общие вопросы C/C++ | 4 | 05.04.2009 23:11 |
пара вопросов по кнопкам | grey | Помощь студентам | 4 | 11.11.2007 19:09 |