|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.02.2013, 19:48 | #1 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 20
|
midlet pascal программку довести до ума
сделал сырую викторину на мидлет паскаль. моя программка не может выдавать вопросы без повторов вопросов. я в тхт файле сделал пока 5 и файл должен заканчиваться на цифру и последняя строчка в тхт файле дб пустой
вот текст ресурсного data.txt файла: okno|window dver|door stena|woll kniga|book voda|woter 1 вот сама программка: Код:
__________________ Исходный код по правилам форума нужно форматировать тегами [CODE] [ /CODE] (это кнопочка на панели форматирования с "решёточкой" - # ) Модератор Последний раз редактировалось Serge_Bliznykov; 27.02.2013 в 22:44. |
27.02.2013, 19:53 | #2 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 20
|
я не программист, программка мне очень нужна. помогите доделать, чтоб вопросы неповторяла. тхт файл с 1000 вопросами я сам сделаю
|
27.02.2013, 20:15 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,312
|
Так понимаю, что повторы вызваны тем, что генератор случайных чисел повторно генерирует число для очередного вопроса.
Предлагаю, например, 1. ограничить размер массива, ограничив размер строки, если это возможно в таком Паскале (у меня его нет) : Код:
Например, если строка не вызывалась, то в этой позиции пробел, а иначе - Х. После генерации номера очередного вопроса проверяем, вызывался ли вопрос ранее. Если да, то генерируем следующее число, а иначе - забиваем в позицию Х и обрабатываем строку ... Как-то так ... Как понял вопрос, так и ... PS: Форматируй код. При вводе кода программы выдели его и нажми символ решотки (#) в верхней части окна ввода.
Как-то так, ...
Последний раз редактировалось ViktorR; 27.02.2013 в 20:19. |
27.02.2013, 21:28 | #4 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 20
|
спасибо за ответ, реализовать твой вариант в мпаскале не смогу(не умею). как это уменьшить размер массива? я собираюсь в викторине использовать 1000 слов, те 1000 строчек и массив будет a[0...1000] как я уменьшу? текстовый файл из 6 строк я сделал для отладки программы, когда прогр заработает - сделаю тхт файл из 1000 строк. в обычном паскале генератор без повторов делают через case. в мидлете нет такой функции
|
27.02.2013, 21:44 | #5 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Не смотрел код (он меня малясь пугает ). Но всё-таки позволю себе влезть в тему. И так Вам надо задать пользователю 1000 вопросов пользователю без повторений так?
Хорошо.. Поехали.. Берем и читаем ВСЕ вопросы и заносим их в массив. Теперь перемешиваем массив.. тоесть Swap (a[k1], a[k2]). Где Swap - процедурка, меняющая числа. (Было 3, 2. Стало 2,3). А потом выводим вопросы.. Главное правильно найти k1/k2, чтобы бедному пользователю не пришлось догадываться что всё-таки означает пустой вопрос? |
27.02.2013, 21:46 | #6 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Правильный метод получения последовательности неповторяющихся элементов:
1. Заполнить массив по порядку. 2. Один раз пройтись по массиву циклом, меняя очередной элемент со случайным. Цитата:
k1 - счетчик цикла, k2 - случайное число в диапазоне размера массива. Последний раз редактировалось Stilet; 28.02.2013 в 19:01. |
|
27.02.2013, 21:53 | #7 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
s-andriano, ага
Интересно, а какова вероятность того что массив перемешанный таким образом останется прежним? |
27.02.2013, 21:55 | #8 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
|
27.02.2013, 21:56 | #9 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 20
|
вы мне про обычный паскаль говорите или про мидлет паскаль? в нем тоже свап есть?
под неповторяющимися вопросами я имею ввиду - вопросы ниразу не должны повториться пока не закончатся все 1000 вопросов |
27.02.2013, 21:58 | #10 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Вы к кому обращаетесь? Я говорю про обычный Паскаль, там своп не нужен, его самому можно написать.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Tasm, не могу довести до ума | Andi3z | Помощь студентам | 1 | 26.06.2011 18:39 |
Довести до ума БД в delphi | Харламов Юрий | Помощь студентам | 6 | 28.12.2010 02:34 |
Циклы. Не могу довести до ума | man-utd- | Помощь студентам | 2 | 21.12.2010 20:05 |
Помогите довести до ума | andresan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 27.11.2009 07:46 |