Текущий архив: 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