Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

Как randomom отсортировать символы?   Найти похожие ветки 

 
Kinder   (2003-09-27 18:12) [0]

Есть сторока из n символов. Надо чтобы все символы кроме 1 и n-1 поменялиись местами хаотично. Как это сделать?
Только не отправляйте в RTFM. Там уже был :)


 
имя   (2003-09-27 18:14) [1]

Удалено модератором


 
имя   (2003-09-27 18:35) [2]

Удалено модератором


 
Kinder   (2003-09-27 18:49) [3]

А о чем хоть читать? Пробовал через High и Low - не получилось %(


 
имя   (2003-09-27 18:52) [4]

Удалено модератором


 
Kinder   (2003-09-27 19:23) [5]

Ну может кто конкретно сказать или тут всех к РТФМу отправляют?


 
имя   (2003-09-27 19:25) [6]

Удалено модератором


 
Kinder   (2003-09-27 20:37) [7]

C какими функциями работать надо? Я новичок в Delphi.


 
Knder   (2003-09-27 21:39) [8]

Вопрос на повестке :)
Модераторам спасибо.


 
Palladin   (2003-09-27 21:50) [9]

сегодня у меня день исходников

var
a:array of integer; // массив

i,n:integer;
tmpList:TList;
begin
tmpList:=TList.Create;
for i:=0 do high(a) do tmpList.Add(Pointer(a[i]));
i:=0;
while tmpList.Count>0 do
begin
n:=random(tmpList.Count);
a[i]:=Integer(tmpList[n]);
tmpList.Delete(n);
i:=i+1;
end;
tmpList.Free;
end;


 
Palladin   (2003-09-27 21:52) [10]

а теперь найди ошибку :) и посмотрим как ты RTFMы читал


 
Kinder   (2003-09-27 22:33) [11]

сразу вижу только что в цикле вместо to do стоит.


 
Palladin   (2003-09-27 22:38) [12]

нет, это опечатка, ты ошибку логическую поищи...


 
ёжиков   (2003-09-27 22:53) [13]

tmpList.Add( Pointer(a[i])); - ???


 
snoup   (2003-09-27 22:53) [14]

:))))))))))))


 
Palladin   (2003-09-27 22:55) [15]


> ёжиков (27.09.03 22:53) [13]

что с тобой? йожик


 
Kinder   (2003-09-28 13:36) [16]

какая-то ерунда получается с кодом этим
и где тут String? Я не пойму. Я вообще про стороку говорил. Меняю a с Integer на String, вывожу, а оно вообще ерунду выдает.


 
Palladin   (2003-09-28 13:57) [17]

а ты не копируй тупо код...
вдумайся в смысл алгоритма...


 
Mihey   (2003-09-28 14:42) [18]

Вот моё решение (сохраняет символы 1 и n-1 нетронутыми, остальные мешает):

procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 1 to High(A) do A[I] := I;
for i := High(A) downto 1 do
begin
R := Random(I-1)+1;
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Str, Str2: String;
r1, r2: String[1];
i: Integer;
Arr: array of Integer;
begin
Str := Edit1.Text;

r1 := Copy(Str, 1, 1);
r2 := Copy(Str, Length(Str)-1, 1);

Randomize;

Delete(Str, 1, 1);
Delete(Str, Length(Str)-1, 1);

SetLength(Arr, Length(Str)+1);
For i := 1 to Length(Str) do
Arr[i] := i;
FillArray(Arr);
For i := 1 to Length(Str) do
begin
Str2 := Str2 + Str[Arr[i]];
end;

Insert(r1, str2, 1);
Insert(r2, str2, Length(Str2));

Edit1.Text := Str2;
end;


 
Kinder   (2003-09-28 15:12) [19]

Хорошее решение :)
Только n-1 всё равно не остается. :(


 
Kinder   (2003-09-28 15:22) [20]

procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 1 to High(A) do A[I] := I;
for i := High(A) downto 1 do
begin
R := Random(I-1)+1;
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

Вот как работает :)
Спасибо всем.
procedure TForm1.Button1Click(Sender: TObject);
var Str, Str2: String;
r1, r2: String[1];
i: Integer;
Arr: array of Integer;
begin
Str := Edit1.Text;

r1 := Copy(Str, 1, 1);
r2 := Copy(Str, Length(Str), 1);

Randomize;

Delete(Str, 1, 1);
Delete(Str, Length(Str), 1);

SetLength(Arr, Length(Str)+1);
For i := 1 to Length(Str) do
Arr[i] := i;
FillArray(Arr);
For i := 1 to Length(Str) do
begin
Str2 := Str2 + Str[Arr[i]];
end;

Insert(r1, str2, 1);
Insert(r2, str2, Length(Str2)+1);

Edit1.Text := Str2;
end;


 
Mihey   (2003-09-28 15:39) [21]

> Только n-1 всё равно не остается. :(

n-1 - это предпоследний символ, а n - это последний. Так что поставленную задачу прога моя выполняла, хотя когда я писал код, сам удивлялся - почему предпоследний символ, а не последний. Ну, это ньансы, главное, что ты сориентировался и всё быстро дописал.


 
Kinder   (2003-09-28 17:20) [22]

Сори. Это опечатка :)Спасибо. Ты гуру.



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

Текущий архив: 2003.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-27376
Vol
2003-09-19 10:27
2003.10.09
InterBase, BDE и терминальный клиент


14-27713
Soft
2003-09-21 19:08
2003.10.09
Могут ли дельфины философствовать?


3-27352
DelphiNew
2003-09-19 17:17
2003.10.09
Проблема с интербейз


9-27296
KRIVOY
2003-04-05 20:11
2003.10.09
Кто-нибудь знает куда надо кидать glscene.inc при


1-27529
Soi
2003-09-30 08:28
2003.10.09
Случайный вывыбор из текстового файла.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский