Другие языки программирования и технологии
программирование в паскале
Всем привет) Есть такой вопрос: мне нужно записать в один массив данные из другого массива, но таким образом, чтобы ячейка массива, из которого записывается информация, определялась случайным числом. ну тоесть рандомно. и вот в общем у меня вопрос, как сделать так, чтобы если рандом выдаст число ячейки, которое уже было, чтобы он еще раз выбрал? ну тоесть я записала что то вроде for i:=1 to 20 do { m:=random(21); и вот сюда нужно как бы впихнуть условие... как его записать? не могу понять. B:=A[m]; } заранее спасибо)
B[ i ] : = A[m]
заведем массив k integer заполним его нулями
проверяем элемент массива k с индексом числа сгенерированного функцией random если там 0 меняем на 1 и делаем замену, нет - ничего не делаем
заведем массив k integer заполним его нулями
проверяем элемент массива k с индексом числа сгенерированного функцией random если там 0 меняем на 1 и делаем замену, нет - ничего не делаем
Сека ***
спасибо, сделала - получилось)
Ты неправильно думаешь.
Надо заходить с другого конца.
Не надо вставлять подряд на случайные места.
Надо брать из случайного места и вставлять подряд.
Исходный массив при этом сдвигается на 1 назад и следующее место определяется уже в диапазоне 1..Н-1.
Надо заходить с другого конца.
Не надо вставлять подряд на случайные места.
Надо брать из случайного места и вставлять подряд.
Исходный массив при этом сдвигается на 1 назад и следующее место определяется уже в диапазоне 1..Н-1.
Сергей Комин
Проблема узнавания не выдаст ли рандомный генератор одни и те же числа от этого не решится.
Вопрос - как избежать ситуации когда рандом-генератор выдаст одно и то же число, а он их будет выдавать.
А вроде просветленный.
Кстати я решал такие задачи при программировании. Массив меток - нужен.
Вопрос - как избежать ситуации когда рандом-генератор выдаст одно и то же число, а он их будет выдавать.
А вроде просветленный.
Кстати я решал такие задачи при программировании. Массив меток - нужен.
"Ну блин как собака - все понимаю, а сказать не могу" (с)
Это, конечно, очень трудно - выдавить из себя краткое и внятное предложение - "необходимо реализовать алгоритм получения последовательности случайных НЕповторяющихся чисел"
Нет, гораздо легче ни разу не напрягая извилины извергать тут опус на пол-страницы вида "ну тоесть рандомно. и вот в общем .. если рандом выдаст число ..,которое уже было, чтобы он еще раз выбрал. .
ну тоесть я записала что то вроде ..блин, чет не прописывает"
Мдя.
Это, конечно, очень трудно - выдавить из себя краткое и внятное предложение - "необходимо реализовать алгоритм получения последовательности случайных НЕповторяющихся чисел"
Нет, гораздо легче ни разу не напрягая извилины извергать тут опус на пол-страницы вида "ну тоесть рандомно. и вот в общем .. если рандом выдаст число ..,которое уже было, чтобы он еще раз выбрал. .
ну тоесть я записала что то вроде ..блин, чет не прописывает"
Мдя.
Сека ***
блин, второй раз за день мне такое говорят....) ну что делать, уж извини, какая есть)
Игорь Гребенюк
по-моему условие достаточно понятно чтобы решить задачу.
Друг!
Напиши пожалуйста четко условие задачи. Здесь тебе помогут. :)
А квадратные скобки отделяй пробелами, чтобы форматирования не было.
Если я правильно понял, проще всего так.
Заведем новый массив - это номера.
var N:array [ 0 .. 19 ] of byte;
Заполним его номерами нашего массива А.
for t := 0 to 19 do N [ t ] := t+1;
Начнем заполнять В с номера p
p := 1;
Теперь 20 раз делаем:
for t := 20 to 1 do
begin
берем номер случайный из всех номеров, что есть
r := random(t);
и присваиваем его очередному В
B [ p ] := A [ r ];
пошли по B дальше
p := p + 1;
end;
Все! :)
Напиши пожалуйста четко условие задачи. Здесь тебе помогут. :)
А квадратные скобки отделяй пробелами, чтобы форматирования не было.
Если я правильно понял, проще всего так.
Заведем новый массив - это номера.
var N:array [ 0 .. 19 ] of byte;
Заполним его номерами нашего массива А.
for t := 0 to 19 do N [ t ] := t+1;
Начнем заполнять В с номера p
p := 1;
Теперь 20 раз делаем:
for t := 20 to 1 do
begin
берем номер случайный из всех номеров, что есть
r := random(t);
и присваиваем его очередному В
B [ p ] := A [ r ];
пошли по B дальше
p := p + 1;
end;
Все! :)
Сека ***
чет не работает(
ваще у меня условие то... ну очень далекое от этой темы)))
просто у меня была идея сделать кусочек вот таким вот макаром... но что то не получается(
ваще у меня условие то... ну очень далекое от этой темы)))
просто у меня была идея сделать кусочек вот таким вот макаром... но что то не получается(
получается что тебе нужен еще один массив - например массив меток занятости, обозначающих завершенную операцию копирования, численность - такая же как у массива данных (20) только записывать туда 1, а предварительно очищать нулями. вот условие и проверят занята ли ячейка или нет (0 или 1).
В принципе в роли меток мог бы сойти и сам массив назначения, если быть уверенным что среди данных не будет нулей. Или к примеру данные - все положительные, тогда забиваешь массив назначения минусовыми числами (-1) а потом проверяешь - закинула ты туда число (стало оно не равным -1) или нет, если там уже не -1 то генератор рандомит снова.
В принципе в роли меток мог бы сойти и сам массив назначения, если быть уверенным что среди данных не будет нулей. Или к примеру данные - все положительные, тогда забиваешь массив назначения минусовыми числами (-1) а потом проверяешь - закинула ты туда число (стало оно не равным -1) или нет, если там уже не -1 то генератор рандомит снова.
Сергей Иванов
Ни хрена тут не нужны никакие дополнительные массивы.
Да напиши задание и я тебе помогу!
Похожие вопросы
- Помощь по информатике. 9 класс. Программирование .Язык Паскаль. Ветвление
- Информатика, программирование на Паскале
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
- Задание_Кто соображает в программировании на паскале? Надо написать небольшую программу, а я в предмете плохо понимаю))
- Помогите с программированием на Паскаль!
- задача по программированию, ТУРБО ПАСКАЛЬ.
- Недавно начал изучать программирование с паскаля.Помогите сделать программу которой я ввел бы 3 числа или больше а она
- Язык программирования Фри Паскаль, какой оператор применить? см. далее
- Программирование на Паскале
- помогите решить задачи по программированию в ПАСКАЛЕ!!!