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

Вниз

Как 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
3-27326
Vemer
2003-09-21 11:25
2003.10.09
(Не)Подстановка Default значений в IBase.


1-27579
IgorKuz
2003-09-29 13:18
2003.10.09
Классы


1-27430
@Ujin
2003-09-28 16:02
2003.10.09
Win 9X и WinNT в чем проблема?


1-27489
Max_
2003-09-26 17:43
2003.10.09
Освобождение памяти VarArray!!!


14-27654
Дмитрий
2003-09-21 11:39
2003.10.09
Разработка ПО на DELPHI для районов бурения скважин.





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