Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Вниз

Насчет randomiz а....   Найти похожие ветки 

 
nUcL34r   (2002-11-08 03:12) [0]

Доброго времени суток всем!
Пытался решить следующую задачу но ничего не вышло:
Вобщем даны числа от 1 до 10, требуется записать эти числа в массив в произвольном порядке и чтоб не повторялись....
Помогите кто может, pls......


 
Николай Быков   (2002-11-08 04:22) [1]

на Паскале это так

uses crt;
const
n=10;
var
massiv:array [1..n] of integer;
i:integer;
begin
clrscr;
randomize;
for i:=1 to n do
begin
massiv[i]:=random(10)+1
write(massiv[i]:4);
end;
writeln;
textcolor(31);
writeln("Press any key");
readkey;
end.


 
Николай Быков   (2002-11-08 04:23) [2]


> чтоб не повторялись....

Упс. Забыл сделат проверку, чтобы не повторялись. Щас напишу


 
Николай Быков   (2002-11-08 05:13) [3]

Вот придумал!
Когда ты заполнил массив, то просто прогоняешь его до того как найдешь повторяющийся элемент. Присваиваешь ему random(10)+1. Опять проверяешь.


 
Николай Быков   (2002-11-08 05:26) [4]

Вот так еще можно:

Присваиваешь random(10)+1 любой левой переменной. Проверяешь на совпадение. Если совпадает, то присваиваешь заново и проверяешь опять. Если не совпало, то присваиваешь эту переменную элементу массива


 
Almaz   (2002-11-08 05:29) [5]


> Николай Быков © (08.11.02 05:13)
> Вот придумал!
> Когда ты заполнил массив, то просто прогоняешь его до того
> как найдешь повторяющийся элемент. Присваиваешь ему random(10)+1.
> Опять проверяешь.

Далеко не оптимальное решение. Представляете, сколько циклов может быть прокручено до получения результата :)))

Предложу такой способ:

var
Massiv: array [0..9] of Integer;

procedure Mix;
var
I, T, Rnd: Integer;
begin
// Заполняем массив
for I := 0 to 9 do Massiv[I] := I + 1;
// Перемешиваем
Randomize;
for I := 0 to 9 do
begin
Rnd := Random(10);
T := Massiv[I];
Massiv[I] := Massiv[Rnd];
Massiv[Rnd] := T;
end;
end;


Скорее всего он тоже не оптимален, но по крайней мере тут всего 2 цикла :)

Удачи.



 
Николай Быков   (2002-11-08 05:31) [6]

Ну да. Можно было и так сделать, я до таких хитростей редко додумываюсь, но тоже идея.

Еще можно было подключать разные виды сортировки ( http://algolist.manual.ru/) для этого дела



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-59135
Irix
2002-11-08 16:17
2002.11.18
Где можно достать TValueListEditor?


3-59006
Nemesis
2002-10-28 10:48
2002.11.18
Lock file has grown too large


4-59477
_sMile
2002-10-07 14:05
2002.11.18
С --> Pascal


1-59090
dronas555
2002-11-07 18:42
2002.11.18
THandle


4-59481
Beginer1
2002-10-07 16:35
2002.11.18
FindFirstFile





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский