| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм] Алгоритм замены символов |
| Автор: kovalenko123 31.1.2011, 21:46 | ||||||||
Всем привет! Не знаю в эту категорию надо ли писать вроде на первый взгляд задача простая и решается с помощью
но практика показала что не все так просто. Случайный образом генерировать 6 переменныx и сравнивать их при этом использовать систему заменяющих чисел то есть число 1 к примеру заменяет 2 вот код кот сразу пришел на ум после показал преподу он сказал что это фигня и к тому же работать не будет хотя я тестировал и все работало... сначала сделал для 3 чисел думал сейчас с один норм сделаю потом просто прокопирую код на все случаи потом 4 вот тут начались проблемы... вот коды для 3 чисел
вот для 4 чисел он ужасный я думал щас этот сделаю все остальные по такому же принципу но нет .. он рабочий но препод сказал что нет
Вот для 5 чисел он ужасный и неработает
для 6 пока не делал потому как еще с 5 не закончил ( Кто нить помогите плиз может быть какой то другой есть способ |
| Автор: _Y_ 31.1.2011, 23:31 |
| Я не опознал что за язык у Вас. Я бы сделал карту замены и каждое вновь сгенерированное число использовал бы в качестве ключа этой карты: 1. Создаем карту замены, в которой каждому ключу соответствует значение. Ключ - то что надо заменить, значение - чем заменять. 2. Генерируем величину S. 3. Проверяем имеется ли у карты ключ S. Если нет, идем к пункту 5. 4. Заменяем величину S значением, полученным из карты и соответствующим данному ключу. 5. Используем полученную величину так, как хотим. 6. Проверяем не надоело ли генерировать величины. Если нет, идем к пункту 2. 7. Сдаем работу, получаем пряник. |
| Автор: DarkProg 1.2.2011, 00:20 |
Это Delphi ;) |
| Автор: kovalenko123 1.2.2011, 06:25 | ||||
skyboy,
генерируем 5 чисел от 1 до 3 возьмем число 1 как число которое заменяет другие одинаковые числа у меня это переменная RS вот сгенерировалось 1 2 2 2 2 это тоже самое что 2 2 2 2 2 тоесть число 1 заменило 2 и вот оно может выпасть в любом месте в середине в конце . мой алгоритм такой
После генерации смотрю есть ли где нибудь символ замены В задании сказано что те случаи когда символ замены не выпадет, в мемо заполнять не надо поэтому нужен такое отфильтровывающий код в общем если по простому сказать : если числа одинаковы и в них есть заменяющий символ то надо записывать в мемо |
| Автор: Akina 1.2.2011, 08:55 |
| А я думал - это у меня к вечеру мозг совсем склеился... ан нет! kovalenko123, до сих пор совершенно непонятно, что же нужно сделать... Давайте так - вот то самое задание, которое выдано преподавателем, скопируйте сюда символ в символ, без каких-либо изменений и дополнений. |
| Автор: kovalenko123 1.2.2011, 10:06 |
| Используя генерацию случайных чисел разработать алгоритм сравнения этих чисел с последующей заменой. То есть Введя универсальное число которое заменяет совпавшие числа. По памяти восстановил оно сейчас на квартире лежит только вечером смогу добратся. Он мне по простому объяснил имея 6 рандомных переменных от 1 до 3, сравнивать их они должны быть одинаковыми при этом если выпадет символ замены к примеру 1 то все равно записывать в мемо а если нет то не записывать Примеры выпало 0 2 2 2 1 1 Записывать не будем потому что 0 есть , еслибы его небыло а была 1ница то записали в мемо бы 1 0 1 0 1 0 все совпали 0 и заменяющий символ 1 пишем в мемо 2 0 0 2 2 0 вообще ничего не делаем тут нет заменяющего символа сравнивать числа в общем используя заменяющие символы Добавлено через 2 минуты и 39 секунд Еще такой вариант пришел в голову записывать сгенерированные числа в статичный массив выкидывать от туда заменяющий символ и смотреть совпадают ли они только как реализовать выкидывание из массива не знаю |
| Автор: Akina 1.2.2011, 10:23 |
| Ничего не понял всё равно... но пока получается так - если после удаления элементов, равных "замещающему числу", все оставшиеся элементы равны, и было хотя бы одно удаление - вывести исходную последовательность, иначе ничего не выводить. |
| Автор: kovalenko123 1.2.2011, 10:45 | ||||
Ну это как вариант только что пришел без ифоф ну вообще давайте еще раз распишу я наверно не так объясняю опыта в этих делах нет Числовая последовательность генерируется из случайных чисел от 1 до 3
Потом она сравнивается эта последовательность чтобы 1 число было равно 2 ,2 число равно 3тьему, 3тье 4ртому и 4ртое пятому. Если выпал на каком то числе к примеру на втором заменяющее число тут оно равно 1 то все считать что оно равно всем остальным и в итоге получим (выпали 0) 0 1 0 0 0 Это одно и тоже что и 0 0 0 0 0 |
| Автор: Akina 1.2.2011, 10:53 |
| Ну и в чём проблема тогда? Бежишь по последовательности (или по массиву) и подсчитываешь количество элементов с каждым из значений. Если в результате для одного из не-заменителей получен ноль - последовательность тебя устраивает. Иначе нет. |
| Автор: kovalenko123 1.2.2011, 11:24 | ||
| А вообще как Вам такое решение задачи? вот начал но по прежнему не знаю как сделать подобную проверку
|
| Автор: kovalenko123 1.2.2011, 13:32 | ||
|
| Автор: Akina 1.2.2011, 14:04 |
| Посмотри на алголисте сортировку подсчётом. Возьми только прямой ход. А потом тупо проверяй полученный массив количеств. |
| Автор: kovalenko123 1.2.2011, 15:12 | ||
НЕ разобрался я с той сортировкой вот такую нашел
Она упорядочивает символы типо ASC ) от 0 до ... вот потом подумал упорядочу да не буду записывать символ замены тоесть 1 и сравню все ключи массива но чтото и это не получается |
| Автор: kovalenko123 2.2.2011, 09:25 |
| Ребята натолкните более детально на мысль плиз |