Главная страница
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.51 MB
Время: 0.019 c
3-27370
P0tia
2003-09-18 19:51
2003.10.09
Проблема с Excel


6-27628
Doctor Deejay
2003-08-07 15:26
2003.10.09
Чаты без сокетов


3-27406
RDen
2003-09-18 12:17
2003.10.09
BDE выдаёт ошибку - At end of table


14-27734
Vuk
2003-09-19 13:14
2003.10.09
Вот, прислали по почте какого-то зверя...


3-27343
MJ
2003-09-19 23:18
2003.10.09
динамический запрос